Sostituzione dell'azione setIamPolicy con un tipo di risorsa supportato

La funzionalità Azioni è una funzionalità alpha che amplia la gamma di metodi API utilizzabili da Deployment Manager chiamata. Poiché questa funzionalità non è supportata, ti consigliamo di eseguire la migrazione dell'utilizzo esistente di Azioni ad alternative supportate. L'azione di uso comune storage.buckets.setIamPolicy corrisponde a un Deployment Manager esistente tipo di risorsa virtual.buckets.iamMemberBinding, che puoi usare per sostituire li annotino.

Migrazione del deployment da storage.buckets.setIamPolicy a virtual.buckets.iamMemberBinding in corso...

La risorsa virtual.buckets.iamMemberBinding è una risorsa virtuale che rappresenta un'associazione di criteri IAM (Identity and Access Management). Il tipo completo è gcp-types/storage-v1:virtual.buckets.iamMemberBinding.

virtual.buckets.iamMemberBinding ha un'implementazione personalizzata della creazione, le operazioni di lettura, aggiornamento ed eliminazione (CRUD) di Deployment Manager di un backend cloud. Chiama un metodo simile a quello richiamato dall'Azione storage.buckets.setIamPolicy, ma è invece modellata come risorsa normale di un'azione e segue lo stesso ciclo di vita di un normale tipo di risorsa.

Per eseguire la migrazione del deployment, sostituisci l'uso dell'azione storage.buckets.setIamPolicy con la risorsa virtual.buckets.iamMemberBinding in tutta la configurazione del deployment . Se hai più associazioni, potrebbero essere necessarie più risorse e implementare la stessa logica tra di loro. Il tipo virtuale non sostituisce nessuna le associazioni esistenti su una risorsa, ma corregge quelle nuove.

Esempi di utilizzo per la migrazione manuale

Per completare la migrazione manualmente, fai riferimento ai seguenti esempi di utilizzo. Nel in alcuni casi, come l'applicazione di più associazioni IAM, potresti dover aggiungere metadata.dependsOn o riferimenti ad altre risorse la risorsa iamMemberBinding per evitare situazioni come le condizioni di gara.

YAML + Jinja

Di seguito è riportato un esempio di come viene utilizzata l'azione setIamPolicy in una di configurazione YAML. Questo approccio non è supportato e deve essere sostituito con l'utilizzo della risorsa virtuale iamMemberBinding:

- name: patch-iam-policy
  action: gcp-types/storage-v1:storage.buckets.setIamPolicy
  properties:
    bucket:
    policy: # existing policy, e.g. from a getIamPolicyAction
    gcpIamPolicyPatch:
      add:

L'esempio seguente mostra l'utilizzo consigliato delle iamMemberBinding risorsa virtuale in un modello YAML e Jinja:

{% set BUCKETNAME = "bucket-" + env["deployment"] %}

resources:
- type: gcp-types/storage-v1:buckets
  name: {{ BUCKETNAME }}
  properties:
  location: US
    storageClass: STANDARD
- type: gcp-types/storage-v1:virtual.buckets.iamMemberBinding
  name: test-bucket-iam
  properties:
    bucket: $(ref.{{ BUCKETNAME }}.name)
    member: projectEditor:{{ env["project"] }}
    role: roles/storage.admin

Python

Di seguito è riportato un esempio di come viene utilizzata l'azione setIamPolicy in una modello Python. Questo approccio non è supportato e deve essere sostituito con utilizzo della risorsa virtuale iamMemberBinding:

resources.append({
        'name': 'add-iam-policy',
        'action': 'gcp-types/storage-v1:storage.buckets.setIamPolicy',
        'properties': {
            'bucket': gcs_bucket,
            'userProject': project,
            'policy': '$(ref.get-iam-policy)',
            'gcpIamPolicyPatch': {
                'add': [{
                    'roles':
                        'roles/storage.objectViewer',
                    'members': [
                        'serviceAccount:$(ref.%s.serviceAccount)' % tpu_name
                    ]
                }]
            }
        }
    })

L'esempio seguente mostra l'utilizzo consigliato delle iamMemberBinding risorsa virtuale in un modello Python:

iam_policy_resource = {
    'name': policy_name,
    'type': 'gcp-types/storage-v1:virtual.buckets.iamMemberBinding',
    'properties':
        {
           'bucket': '$(ref.{}.name)'.format(context.env['name']),
           'role': role['role'],
           'member': member,
         }
}

Puoi trovare altri esempi relativi al modello gcs-bucket.py nel repository cloud-foundation-toolkit su GitHub. Per una dimostrazione dettagliata del processo di conversione gcs-bucket.py dall'uso dell'azione setIamPolicy all'uso risorsa virtuale iamMemberBinding, consulta le esempio di conversione: Puoi anche trovare: esempi di utilizzo del modello convertito.