Mac*_*iej 4 amazon-web-services terraform terraform-provider-aws
我正在使用 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)}"
}
}
Run Code Online (Sandbox Code Playgroud)
后来我尝试使用以下命令创建 SSM 参数:
resource "aws_ssm_parameter" "private_subnets_ids" {
name = "/${var.client_code}-${var.environment}/backend/SUBNET_IDS"
type = "StringList"
value = aws_subnet.private.*.id
}
Run Code Online (Sandbox Code Playgroud)
由于子网资源正在创建三个子网,因此会引发以下错误:
4: value = aws_subnet.private.*.id
|----------------
| aws_subnet.private is tuple with 3 elements
Inappropriate value for attribute "value": string required.
Run Code Online (Sandbox Code Playgroud)
我应该如何将这个三元素元组传递给StringList类型参数?
yda*_*coR 11
无论指定如何,资源的参数value都需要是字符串类型。事实上,AWS 始终期望参数为字符串类型,如API 文档中所示并在本答案中提到,该类型本质上是客户端的元数据,期望它是一个包含由逗号字符连接在一起的其他字符串的字符串。aws_ssm_parametertypeStringList
要将元组类型转换aws_subnet.private.*.id为列表,您可以使用如下join函数将其连接起来:
resource "aws_ssm_parameter" "private_subnets_ids" {
name = "/${var.client_code}-${var.environment}/backend/SUBNET_IDS"
type = "StringList"
value = join(",", aws_subnet.private.*.id)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4786 次 |
| 最近记录: |