在 Terraform 中输出 for_each 生成的资源

Outputting resources generated by for_each in Terraform

我正在从这样的数组创建 S3 存储桶:

resource "aws_s3_bucket" "aws_s3_zenity_bucket" {
  bucket = "${each.value}"
  for_each = toset(var.s3_buckets)
}

其中 s3_buckets 只是一个包含我要创建的 s3 存储桶名称的列表。

我想要模块输出一个列表,其中包含生成的存储桶的所有 ARN。

我想要的伪代码:

output "s3_buckets_arns" {
    for_each = aws_s3_bucket.aws_s3_zenity_bucket
    select_as_output = each.value.arn
} # should look something like ["arn1", "arn2", ....]

我如何在 TF 中执行此操作?

您可以使用splat operator combined with the values函数:

output "s3_buckets_arns" {
  value = values(aws_s3_bucket.aws_s3_zenity_bucket)[*].arn
}