在 Terraform 中,如何从对象数组中输出列表?

dr3*_*r3x 10 amazon-s3 amazon-web-services terraform

我正在使用以下定义创建一系列 s3 存储桶:

resource "aws_s3_bucket" "map" {
  for_each = local.bucket_settings
  bucket = each.key
...
}
Run Code Online (Sandbox Code Playgroud)

我想输出网站端点的列表:

 output "website_endpoints" {
    # value = aws_s3_bucket.map["example.com"].website_endpoint
    value = ["${keys(aws_s3_bucket.map)}"] 
 }
Run Code Online (Sandbox Code Playgroud)

提取端点列表(而不是完整的对象属性)的语法是什么?

Mar*_*cin 24

如果你只是想得到一个listof website_endpoint,那么你可以这样做:

 output "website_endpoints" {
    value = values(aws_s3_bucket.map)[*].website_endpoint
 }
Run Code Online (Sandbox Code Playgroud)

这使用splat表达式。


Lad*_*ili 6

您可以使用 for 循环遍历存储桶并输出特定属性,在本例中为 website_endpoint。

output "endpoint" {
    value = [for s in aws_s3_bucket.map : s.website_endpoint[*]]
}
Run Code Online (Sandbox Code Playgroud)