【发布时间】:2021-09-06 21:30:41
【问题描述】:
我正在尝试通过 Terraform 创建一个存储传输作业:
resource "google_storage_transfer_job" "goout_storage_backup" {
description = "my-transfer-job"
project = "my-project"
transfer_spec {
object_conditions {
max_time_elapsed_since_last_modification = "86400s"
}
transfer_options {
delete_objects_from_source_after_transfer = false
delete_objects_unique_in_sink = false
overwrite_objects_already_existing_in_sink = true
}
gcs_data_source {
bucket_name = "source"
}
gcs_data_sink {
bucket_name = "target"
}
}
schedule {
schedule_start_date {
year = 1970
month = 01
day = 1
}
start_time_of_day {
hours = 4
minutes = 27
seconds = 0
nanos = 42
}
}
}
我的现有作业可以使用此脚本轻松管理,但是 Terraform 拒绝创建任何新的传输作业:
错误:googleapi:错误 400:由于权限不足,无法获取 Google Cloud Storage (GCS) 存储桶 source 的位置。请验证是否已授予必要的权限。失败的前提条件
但是我的用户是owner,我也尝试分配Storage Transfer Admin 和Storage Admin,但没有成功。
【问题讨论】:
-
您是通过 Cloud Build 还是通过 CLI 运行它?源桶和汇桶是否在同一个项目中?如果他们在不同的项目中,您是否正确地获得了这两个项目的权限?
-
这发生在 gcloud 实例和我的本地主机上。存储桶在同一个项目中。
-
只是想确认一下,所以您确实在该资源块中定义了一个项目?我在上面的代码中没有看到它。
-
您能否查看此链接以查看是否有帮助? stackoverflow.com/a/53022262/13291468
-
我只是手动将传输服务帐户添加到源和目标存储桶中,从而解决了这个问题。
标签: google-cloud-platform terraform google-cloud-storage terraform-provider-gcp