アクション機能は、Deployment Manager が呼び出すことができる API メソッドの範囲を拡張するアルファ版の機能です。この機能はサポートされていないため、アクションの既存の使用をサポートされている代替のものに移行することをおすすめします。よく使用されるアクション storage.buckets.setIamPolicy
は、既存の Deployment Manager リソースタイプ virtual.buckets.iamMemberBinding
に対応しており、これは、リソースタイプを置き換えることができます。
storage.buckets.setIamPolicy
から virtual.buckets.iamMemberBinding
へのデプロイの移行
virtual.buckets.iamMemberBinding
リソースは、Identity and Access Management(IAM)ポリシー バインディングを表す仮想リソースです。完全な型は gcp-types/storage-v1:virtual.buckets.iamMemberBinding
です。
virtual.buckets.iamMemberBinding
は、Deployment Manager バックエンドから作成、読み取り、更新、削除(CRUD)オペレーションがカスタム実装されています。アクション storage.buckets.setIamPolicy
で呼び出されるメソッドと同様のメソッドを呼び出しますが、アクションではなく通常のリソースとしてモデル化され、通常のリソースタイプと同じライフサイクルを守ってます。
デプロイを移行するには、すべてのデプロイ構成ファイルで、アクション storage.buckets.setIamPolicy
の使用をリソース virtual.buckets.iamMemberBinding
に置き換えます。複数のバインディングがある場合は、複数のリソースにわたり同じロジックを実装するために複数のリソースが必要になる場合があります。仮想タイプは、リソースの既存のバインディングを置き換えずに、新しいものにパッチを適用します。
手動移行の使用例
移行を手動で完了するには、以下の使用例をご覧ください。複数の IAM バインディングを適用する場合などの特定の場合には、metadata.dependsOn
または他のリソースへの参照を iamMemberBinding
リソースに追加して、競合状態などの状況を回避する必要がある場合があります。
YAML + Jinja
YAML 構成ファイルで setIamPolicy
アクションを使用する方法の例を次に示します。このアプローチはサポートされていないため、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:
次のサンプルでは、YAML および Jinja テンプレートで iamMemberBinding
仮想リソースを使用することを推奨しています。
{% 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
Python テンプレートで setIamPolicy
アクションを使用する方法の例を次に示します。このアプローチはサポートされていないため、iamMemberBinding
仮想リソースの使用に置き換える必要があります。
次のサンプルでは、Python テンプレートで iamMemberBinding
仮想リソースを使用することを推奨しています。
gcs-bucket.py
テンプレートに関連するその他のサンプルは、GitHub の cloud-foundation-toolkit
リポジトリにあります。gcs-bucket.py
テンプレートを、アクション setIamPolicy
の使用から仮想リソース iamMemberBinding
の使用に変換するプロセスの詳細なデモについては、変換の例をご覧ください。変換されたテンプレートの使用例もご覧ください。