Mengganti Action setIamPolicy dengan jenis resource yang didukung

Fitur Actions adalah fitur alfa yang memperluas rentang metode API yang dapat dipanggil Deployment Manager. Karena fitur ini tidak didukung, sebaiknya migrasikan penggunaan yang ada Actions ke alternatif yang didukung. Tindakan storage.buckets.setIamPolicy yang umum digunakan sesuai dengan jenis resource Deployment Manager virtual.buckets.iamMemberBinding yang ada, yang dapat Anda gunakan untuk menggantikannya.

Memigrasikan deployment dari storage.buckets.setIamPolicy ke virtual.buckets.iamMemberBinding

Resource virtual.buckets.iamMemberBinding adalah resource virtual yang merepresentasikan binding kebijakan Identity and Access Management (IAM). Jenis lengkapnya adalah gcp-types/storage-v1:virtual.buckets.iamMemberBinding.

virtual.buckets.iamMemberBinding memiliki penerapan kustom operasi buat, baca, perbarui, dan hapus (CRUD) dari backend Deployment Manager. Metode ini memanggil metode yang serupa dengan metode yang dipanggil oleh Action storage.buckets.setIamPolicy, tetapi dimodelkan sebagai resource normal, bukan Action, dan mengikuti siklus proses yang sama dengan jenis resource normal.

Untuk memigrasikan deployment, ganti penggunaan Action storage.buckets.setIamPolicy dengan resource virtual.buckets.iamMemberBinding di semua file konfigurasi deployment Anda. Jika memiliki beberapa binding, Anda mungkin memerlukan beberapa resource untuk menerapkan logika yang sama di seluruh binding tersebut. Jenis virtual tidak menggantikan binding yang ada pada resource, tetapi menambal binding baru.

Contoh penggunaan untuk migrasi secara manual

Untuk menyelesaikan migrasi secara manual, lihat contoh penggunaan berikut. Dalam kasus tertentu, seperti penerapan beberapa binding IAM, Anda mungkin perlu menambahkan metadata.dependsOn atau referensi ke resource lain ke resource iamMemberBinding untuk menghindari situasi seperti kondisi persaingan.

YAML + Jinja

Berikut adalah contoh cara penggunaan Tindakan setIamPolicy dalam file konfigurasi YAML. Pendekatan ini tidak didukung, dan harus diganti dengan penggunaan resource virtual 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:

Contoh berikut menunjukkan penggunaan yang direkomendasikan untuk resource virtual iamMemberBinding dalam template YAML dan 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

Berikut adalah contoh cara penggunaan Tindakan setIamPolicy dalam template Python. Pendekatan ini tidak didukung, dan harus diganti dengan penggunaan resource virtual 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
                    ]
                }]
            }
        }
    })

Contoh berikut menunjukkan penggunaan yang direkomendasikan untuk resource virtual iamMemberBinding dalam template 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,
         }
}

Anda dapat menemukan contoh tambahan terkait template gcs-bucket.py di repositori cloud-foundation-toolkit di GitHub. Untuk melihat demonstrasi mendetail tentang proses mengonversi template gcs-bucket.py dari penggunaan Action setIamPolicy ke penggunaan resource virtual iamMemberBinding, lihat contoh konversi. Anda juga dapat menemukan contoh penggunaan template yang dikonversi.