Terraform GCP - 等待设置使用导出存储桶时出错。:“gcp-bucket”需要“读取”权限
Posted
技术标签:
【中文标题】Terraform GCP - 等待设置使用导出存储桶时出错。:“gcp-bucket”需要“读取”权限【英文标题】:Terraform GCP - Error waiting for Setting usage export bucket.: Required 'read' permission for 'gcp-bucket' 【发布时间】:2020-10-23 07:41:00 【问题描述】:我目前在通过 Terraform 创建 GCP 项目并设置 Compute Engine Usage Export 时收到上述错误消息。我的配置中部署它的部分是:
"google_project_usage_export_bucket":
"usage_export":
"project": "$google_project.project_name.project_id",
"bucket_name": "gcp-bucket",
"prefix": "test-export"
我用于部署项目的服务帐号已获得存储桶的“Storage Object Viewer”权限。 我不确定它还需要什么其他“读取”权限,因为它不够明确。
对此的任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:请确保用于访问云存储的服务帐户是具有存储对象管理员角色的 Compute Engine 服务帐户“xxxxxxxxxxx-compute@developer.gserviceaccount.com”。 vm 实例的存储读取器的 API 范围应该是读/写的。 请使用文档 [1] https://cloud.google.com/container-registry/docs/access-control 获取存储桶的权限和角色。
还请提供与您的问题相关的更多详细信息,例如“gcp-bucket”存储桶的云控制台上的“权限”选项卡?
让我们通过将文件从您的 VM 实例导出到 GCS 来尝试一个简单的测试,看看这里是否存在任何 IAM 权限或 VM 范围问题。
1- 在 VM 实例中,运行“gcloud auth list”以验证服务帐户“xxxxxxxxxxx-compute@developer.gserviceaccount.com”是否存在且处于活动状态;如果不是,请运行“gcloud config”设置账号 xxxxxxxxxxx-compute@developer.gserviceaccount.com"
2- 如果它不存在,那么我们需要按照本文档 [2] https://cloud.google.com/sdk/gcloud/reference 使用他们自己的 .json 密钥将其添加到身份验证列表中/auth/activate-service-account ,然后你可以继续' gcloud config set account “ xxxxxxxxxxx-compute@developer.gserviceaccount.com”
3- 运行以下命令在 Cloud Shell 中创建示例文本文件:' echo "this is a sample file" > sample.txt '
4- 如果您不想使用“gcp-bucket”,可以创建另一个存储桶' gsutil mb -l us-central1 gs://test '
5-运行以下命令将文件复制到存储桶“gcp-bucket " gsutil cp sample.txt gs://gcp-bucket
6- 列出存储桶中的项目 'gsutil ls gs://YOURBUCKET'
这个想法是区分问题发生的位置:VM 实例、IAM、GCS。【讨论】:
这就是答案 - 它需要存储对象管理员角色,即使错误消息只列出了它已经拥有的“读取”权限。非常感谢! :)以上是关于Terraform GCP - 等待设置使用导出存储桶时出错。:“gcp-bucket”需要“读取”权限的主要内容,如果未能解决你的问题,请参考以下文章
使用 Terraformer\Terraform 克隆 GCP 项目