Google cloud platform Terraform GCP-等待设置使用导出桶时出错:必选';阅读';许可';gcp桶';

Google cloud platform Terraform GCP-等待设置使用导出桶时出错:必选';阅读';许可';gcp桶';,google-cloud-platform,terraform,Google Cloud Platform,Terraform,我目前在通过Terraform创建GCP项目并设置计算引擎使用导出时收到上述错误消息。我的配置中部署此功能的部分是: "google_project_usage_export_bucket": { "usage_export": { "project": "${google_project.project_name.project_id}", "bucket_na

我目前在通过Terraform创建GCP项目并设置计算引擎使用导出时收到上述错误消息。我的配置中部署此功能的部分是:

"google_project_usage_export_bucket": {
      "usage_export": {
        "project": "${google_project.project_name.project_id}",
        "bucket_name": "gcp-bucket",
        "prefix": "test-export"
      }
    }
我用于部署项目的服务帐户已被授予bucket上的“存储对象查看器”权限。 我不确定它还需要什么“阅读”权限,因为它不够明确


非常感谢您的帮助。

请确保用于访问云存储的服务帐户为计算引擎服务帐户“XXXXXXXXXX”-compute@developer.gserviceaccount.com“具有存储对象管理员角色。vm实例的存储读取器的API作用域应为读/写。 请使用文件[1]{https://cloud.google.com/container-registry/docs/access-control}获取bucket的权限和角色

还请提供与您的问题相关的更多详细信息,如云控制台上“gcp bucket”bucket的权限选项卡

让我们尝试一个简单的测试,将一个文件从VM实例导出到GCS,看看这里是否存在IAM权限或VM作用域问题

1-在VM实例内,运行“gcloud auth list”以验证服务帐户是否为“xxxxxxxxxx”-compute@developer.gserviceaccount.com“存在并处于活动状态;如果不是这样,请运行'gcloud config set account xxxxxxxxxx-compute@developer.gserviceaccount.com"

2-如果不存在,则需要按照本文档[2]将其添加到具有自己的.json密钥的auth列表中{https://cloud.google.com/sdk/gcloud/reference/auth/activate-service-account },然后您可以继续使用“gcloud config set account”xxxxxxxxxx-compute@developer.gserviceaccount.com"

3-运行以下命令在云Shell中创建示例文本文件:“echo”这是一个示例文件“>sample.txt”

4-如果不想使用“gcp bucket”'gsutil mb-l us-central1 gs://test',可以创建另一个bucket

5-运行以下命令将文件复制到bucket“gcp bucket”中 “gsutil cp sample.txt gs://gcp bucket

6-列出存储桶“gsutil ls gs://YOURBUCKET”中的项目

  • 其思想是区分问题发生的位置:VM实例、IAM、GCS

这就是答案-它需要存储对象管理员角色,尽管错误消息只列出了它已经拥有的“读取”权限。非常感谢!)