アクション機能は、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 の使用に変換するプロセスの詳細なデモについては、変換の例をご覧ください。変換されたテンプレートの使用例もご覧ください。