在界面中,我可以转到COS Bucket访问策略,并轻松分配策略,然后看起来或多或少像:
Cloud Object Storage service
serviceInstance string equals foo-bar, resource string equals foo-bar-pcaps, resourceType string equals bucket
我很难找到一种通过地形来做同样的事情的方法,因为每当我尝试使用合适的TF代码时,比如:
resource "ibm_iam_service_policy" "policy_pcaps" {
iam_service_id = ibm_iam_service_id.serviceID_pcaps.id
roles = ["Writer"]
resources {
service = "cloud-object-storage"
resource = ibm_cos_bucket.pcaps.id
}
}
我的
Cloud Object Storage service
resource string equals crn:v1:bluemix:public:cloud-object-storage:global:a/27beaaea79a<redacted>34dd871b:8b124bc6-147c-47ba-bd47-<redacted>:bucket:foo-bar-pcaps:meta:rl:us-east
问题是此处所需的Writer
策略无法正确处理该策略详细信息。
如何用Terraform实现类似于第一个策略的东西?
感谢
您可以通过使用属性实现类似于此示例的服务策略。
我通过云对象存储的UI创建了一个策略,并指定该策略包含存储桶名称。然后我用了:
ibmcloud iam access-group-policy GROUP_NAME POLICY_ID --output JSON
以便更好地了解该政策。
我创建了这个示例地形片段并对其进行了测试。它正在创建IAM访问组+策略:
resource "ibm_iam_access_group" "accgrp_cos" {
name = "test_cos"
}
resource "ibm_iam_access_group_policy" "policy" {
access_group_id = ibm_iam_access_group.accgrp_cos.id
roles = ["Writer"]
resources {
service = "cloud-object-storage"
attributes = {
resourceType = "bucket"
resource = "tf-test-cos"
}
}
}