试图将地形资源附加到一个列表中,但我遇到语法错误



我的意图是让它使所有的资源是三个列表,并将它们连接到一个列表,但我在这里得到这个错误:属性"resources"不合适的值:元素0:字符串所需。

这是我尝试的:

`
resources = [
concat(
[for b in concat(each.value.local_data_bucket_write, each.value.local_data_bucket_read) : "arn:aws:s3:::${b}"],
[for b in concat(each.value.local_data_bucket_write, each.value.local_data_bucket_read) : "arn:aws:s3:::${b}/*"],
["arn:aws:sts:${var.aws_region}:${var.data_aws_account_id}:*"]
)
]`

表达式包括两个括号[ ]concat函数的调用,该函数返回一个列表。因此,表达式生成了一个额外的换行列表,如下所示:

[
[
"arn:aws:s3:::example",
"arn:aws:s3:::example/*",
"arn:aws:sts:example:example:*",
],
]

去掉周围的[ ]括号,将concat结果直接赋值给resources。该函数的结果自然是一个字符串列表,因此对于需要字符串集合的实参来说,它已经是一个合适的类型。

似乎您的代码在资源部分有额外的一对[ ]语法问题。

详细信息请参见在AWS IAM策略中指定多个资源。

concat函数已经通过组合多个列表返回一个列表,所以在这种情况下,正确的代码应该是

resources = concat(
[for b in concat(each.value.local_data_bucket_write, each.value.local_data_bucket_read) : "arn:aws:s3:::${b}"],
[for b in concat(each.value.local_data_bucket_write, each.value.local_data_bucket_read) : "arn:aws:s3:::${b}/*"],
["arn:aws:sts:${var.aws_region}:${var.data_aws_account_id}:*"]
)

最新更新