设置 S3 存储桶标签时出错:无效标签:您提供的标签值无效状态代码:400



我已经设法使我的 Terraform 循环遍历我的所有存储桶,创建了一个 IAM 用户和一个存储桶

resource "aws_s3_bucket" "aws_s3_buckets" {
count         = "${length(var.s3_bucket_name)}"
bucket        = "${var.s3_bucket_name[count.index]}"
acl           = "private"
tags = {
Name        = "${var.s3_bucket_name[count.index]}"
Environment = "live"
policy = <<POLICY
{
"Id": "Policy1574607242703",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1574607238413",
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": {
"arn:aws:s3:::"."${var.s3_bucket_name[count.index]}"."/*"}
},
"Principal": {
"AWS": [
"${var.s3_bucket_name[count.index]}"}
]}                
}
]
}
POLICY
}
}

我在设置 S3 存储桶标签时出错:无效标签:您提供的标签值无效 状态代码:400有没有办法创建这样的策略? 还是我在代码中做了不正确的事情?

错误是因为policy部分不是tag参数的一部分。它是aws_s3_bucket资源中的一个单独部分。您还可以使用aws_s3_bucket_policy资源创建存储桶策略。

注意:该政策存在很多问题。您必须修复它们才能使策略正常通过。其中一些问题是:

  • "arn:aws:s3:::"."${var.s3_bucket_name[count.index]}"."/*"}- 这不应该在 JSON 中。
  • 有些大括号未正确对齐(一些额外的大括号(。
  • 委托人应为 IAM 资源(IAM 用户或 IAM 角色或账户或 *(。

问题在标签部分。

tags = {
Name        = "${var.s3_bucket_name[count.index]}"
Environment = "live"
}

"名称"标记的值应为${var.s3_bucket_name.aws_s3_buckets[count.index]}

最新更新