我正在尝试for循环并获得正确的插值:
variable "my_bucket_names" {
type = list(string)
default = [
"b1",
"b2",
]
}
resource "aws_s3_bucket_policy" "tf-thing-audit-policy" {
for_each = toset(var.my_bucket_names)
bucket = ${each.key.id}
...
是否有一种方法可以对bucket
值进行插值?
错误:
│ Expected the start of an expression, but found an invalid expression token.
each.key
是string
类型,不是对象或映射,因此执行.id
将得到null
,因为它不存在。
直接使用each.key
的值对于您正在尝试做的事情(将一个桶策略分配给多个桶)是可以的。你也不需要{}
,因为你不需要为aws_s3_bucket_policy
的bucket
参数做任何字符串插值。
aws_s3_bucket_policy
只需要桶名,即each.key
:
bucket -(必选)桶名
如果您指定了一个有效的桶策略,这应该可以很好地工作:
variable "my_bucket_names" {
type = list(string)
default = [
"b1",
"b2",
]
}
resource "aws_s3_bucket_policy" "tf-thing-audit-policy" {
for_each = toset(var.my_bucket_names)
bucket = each.key
policy = jsonencode(...)
}