【问题标题】:In Terraform, how do you output a list from an array of objects?在 Terraform 中,如何从对象数组中输出列表?
【发布时间】:2021-04-26 15:38:24
【问题描述】:

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

resource "aws_s3_bucket" "map" {
  for_each = local.bucket_settings
  bucket = each.key
...
}

我想输出一个网站端点列表:

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

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

【问题讨论】:

    标签: amazon-web-services amazon-s3 terraform


    【解决方案1】:

    如果你只想得到listwebsite_endpoint,那么你可以这样做:

     output "website_endpoints" {
        value = values(aws_s3_bucket.map)[*].website_endpoint
     }
    

    这使用splat 表达式。

    【讨论】:

      【解决方案2】:

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

      output "endpoint" {
          value = [for s in aws_s3_bucket.map : s.website_endpoint[*]]
      }
      

      【讨论】:

        猜你喜欢
        • 2019-02-06
        • 2021-07-01
        • 2021-10-04
        • 2021-08-08
        • 2020-12-07
        • 2021-09-20
        • 2019-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多