如何在Terraform中创建GCP工作负载身份IAM绑定?遇正则匹配错误
问题原因与解决方法
错误的核心原因是Terraform的google_service_account_iam_binding资源对service_account_id字段的格式要求和gcloud命令不同:
- gcloud允许直接使用IAM服务账户的邮箱地址作为标识
- Terraform要求该字段必须使用完整的资源路径格式,即
projects/{PROJECT_ID}/serviceAccounts/{SA_EMAIL}
你当前代码里的service_account_id用了邮箱格式(GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com),不符合Terraform的校验正则,所以触发错误。
修正后的代码
resource "google_service_account_iam_binding" "service-account-iam" { service_account_id = "projects/GSA_PROJECT/serviceAccounts/GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com" role = "roles/iam.workloadIdentityUser" members = [ "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE/KSA_NAME]", ] }
只需把service_account_id替换为包含项目路径的完整资源标识符即可解决该错误。
内容的提问来源于stack exchange,提问作者Nitin G
相关产品推荐
相关产品推荐

