Cette page a été traduite par l'API Cloud Translation.
Switch to English

Remplacer l'action setIamPolicy par un type de ressource compatible

La fonctionnalité Actions est une fonctionnalité alpha qui étend la gamme des méthodes API que Deployment Manager peut appeler. Cette fonctionnalité n'étant pas disponible, nous vous recommandons de migrer votre utilisation existante d'actions vers des alternatives compatibles. L'action storage.buckets.setIamPolicy couramment utilisée correspond à un type de ressource Deployment Manager existant, virtual.buckets.iamMemberBinding, que vous pouvez utiliser pour remplacer celui-ci.

Migrer votre déploiement de storage.buckets.setIamPolicy vers virtual.buckets.iamMemberBinding

La ressource virtual.buckets.iamMemberBinding est une ressource virtuelle qui représente une liaison de stratégie de gestion de l'authentification et des accès (IAM). Son type complet est gcp-types/storage-v1:virtual.buckets.iamMemberBinding.

virtual.buckets.iamMemberBinding dispose d'une mise en œuvre personnalisée des opérations CRUD (création, lecture, mise à jour et suppression) du backend Deployment Manager. Elle appelle une méthode semblable à la méthode appelée par l'action storage.buckets.setIamPolicy, mais elle est modélisée comme une ressource normale et non comme une action, et elle suit le même cycle de vie qu'un type de ressource normal.

Pour migrer votre déploiement, remplacez votre utilisation de l'action storage.buckets.setIamPolicy par la ressource virtual.buckets.iamMemberBinding dans tous vos fichiers de configuration de déploiement. Si vous disposez de plusieurs liaisons, vous aurez peut-être besoin de plusieurs ressources pour mettre en œuvre la même logique. Le type virtuel ne remplace aucune liaison existante sur une ressource, mais applique les correctifs aux nouvelles liaisons.

Exemples d'utilisation pour une migration manuelle

Pour terminer la migration manuellement, reportez-vous aux exemples d'utilisation suivants. Dans certains cas, par exemple l'application de plusieurs liaisons IAM, vous devrez peut-être ajouter metadata.dependsOn ou des références à d'autres ressources à la ressource iamMemberBinding pour éviter des situations telles que les conditions de concurrence. s'affiche en haut de l'écran.

YAML + Jinja

Voici un exemple d'utilisation de l'action setIamPolicy dans un fichier de configuration YAML. Cette approche n'est pas acceptée et doit être remplacée par l'utilisation de la ressource virtuelle 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'exemple suivant illustre l'utilisation recommandée de la ressource virtuelle iamMemberBinding dans un modèle YAML et 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

Voici un exemple d'utilisation de l'action setIamPolicy dans un modèle Python. Cette approche n'est pas acceptée et doit être remplacée par l'utilisation de la ressource virtuelle 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'exemple suivant illustre l'utilisation recommandée de la ressource virtuelle iamMemberBinding dans un modèle 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,
         }
}

Vous trouverez d'autres exemples associés au modèle gcs-bucket.py dans le dépôt cloud-foundation-toolkit sur GitHub. Pour une démonstration détaillée du processus de conversion du modèle gcs-bucket.py de l'utilisation de l'action setIamPolicy à la ressource virtuelle iamMemberBinding, reportez-vous à l'exemple de conversion.. Vous pouvez également consulter des exemples d'utilisation du modèle converti.