【问题标题】:How can I store a three element tuple in AWS SSM parameter with Terraform?如何使用 Terraform 在 AWS SSM 参数中存储三元素元组?
【发布时间】:2021-03-03 02:12:23
【问题描述】:

我正在使用 Terraform 创建私有子网:

resource "aws_subnet" "private" {
  count = length(data.aws_availability_zones.available.names)

  vpc_id                  = aws_vpc.main_vpc.id
  cidr_block              = cidrsubnet(var.vpc_cidr, 8, count.index + 10)
  availability_zone       = element(data.aws_availability_zones.available.names, count.index)
  map_public_ip_on_launch = false

  tags = {
    Name = "${var.client_code}-${var.environment}-private-${element(data.aws_availability_zones.available.names, count.index)}"
  }
}

稍后我尝试使用以下方法创建 SSM 参数:

resource "aws_ssm_parameter" "private_subnets_ids" {
  name  = "/${var.client_code}-${var.environment}/backend/SUBNET_IDS"
  type  = "StringList"
  value = aws_subnet.private.*.id
}

由于子网资源正在创建三个子网,因此会引发以下错误:

   4:   value = aws_subnet.private.*.id
    |----------------
    | aws_subnet.private is tuple with 3 elements

Inappropriate value for attribute "value": string required.

我应该如何将这三元素元组传递给StringList 类型参数?

【问题讨论】:

    标签: amazon-web-services terraform terraform-provider-aws


    【解决方案1】:

    aws_ssm_parameter resourcevalue parameter 必须是字符串类型,而不管指定的 type 是什么。事实上,AWS 总是希望参数是字符串类型,如 the API docsthis answer 中提到的那样,StringList 类型本质上是客户端的元数据,希望它是一个包含其他字符串连接在一起的字符串用逗号字符。

    要将您的元组类型从 aws_subnet.private.*.id 转换为列表,您可以使用 join function 加入它,如下所示:

    resource "aws_ssm_parameter" "private_subnets_ids" {
      name  = "/${var.client_code}-${var.environment}/backend/SUBNET_IDS"
      type  = "StringList"
      value = join(",", aws_subnet.private.*.id)
    }
    

    【讨论】:

    • 谢谢你,一如既往 :) 对 anwser 的小修正:value = join(",", aws_subnet.private.*.id) - 缺少昏迷
    【解决方案2】:

    这里是完整的例子:

    resource "aws_ssm_parameter" "SubnetIDs" {
      name        = "SubnetIDs"
      description = "SubnetIDs"
      type        = "StringList"
      value       = join(", ", aws_subnet.private-subnet.*.id)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-14
      • 2021-12-01
      • 1970-01-01
      • 2020-03-30
      • 2019-02-19
      • 2020-05-01
      • 2021-10-08
      • 2011-07-02
      相关资源
      最近更新 更多