Action 功能是一项 Alpha 版功能,其扩展了 Deployment Manager 可以调用的 API 方法的范围。由于此功能不受支持,我们建议您迁移 Actions 的现有使用到受支持的替代方案。常用的操作 storage.buckets.setIamPolicy
对应于现有的 Deployment Manager 资源类型 virtual.buckets.iamMemberBinding
,您可以使用它来替换该功能。
将部署从 storage.buckets.setIamPolicy
迁移到 virtual.buckets.iamMemberBinding
virtual.buckets.iamMemberBinding
资源是代表身份和访问权限管理 (IAM) 政策绑定的虚拟资源。其完整类型为 gcp-types/storage-v1:virtual.buckets.iamMemberBinding
。
virtual.buckets.iamMemberBinding
具有从 Deployment Manager 后端执行创建、读取、更新和删除 (CRUD) 操作的自定义实现。它会调用与操作 storage.buckets.setIamPolicy
调用的方法类似的方法,但它建模为正常资源而不是操作,并且它遵循与普通资源类型相同的生命周期。
如需迁移部署,请在所有部署配置文件中将操作 storage.buckets.setIamPolicy
替换为资源 virtual.buckets.iamMemberBinding
。如果您有多个绑定,则可能需要多个资源来跨它们实现相同的逻辑。虚拟类型不会替换资源上的任何现有绑定,而是修补新绑定。
手动迁移的用法示例
如需手动完成迁移,请参阅以下用法示例。在某些情况下(例如,应用多个 IAM 绑定),您可能需要向 iamMemberBinding
资源添加 metadata.dependsOn
或对其他资源的引用,以避免出现争用情况等情况。
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
虚拟资源的建议用法:
您可以在 GitHub 上的 cloud-foundation-toolkit
代码库中找到与 gcs-bucket.py
模板相关的其他示例。如需取得详细的演示来了解如何将 gcs-bucket.py
模板从使用操作 setIamPolicy
转换为使用虚拟资源 iamMemberBinding
的过程,请参阅示例转换。您还可以
用法示例
转换后模板的效果。