gpt4 book ai didi

amazon-web-services - 如何将可用区列表从 Terraform 传递到 CloudFormation 模板?

转载 作者:行者123 更新时间:2023-12-03 07:19:57 25 4
gpt4 key购买 nike

我有一个定义此参数的 CloudFormation 模板:

        "AvailabilityZones" : {
"Description" : "List of Availability Zones used ... ",
"Type" : "List<AWS::EC2::AvailabilityZone::Name>"
},

我像这样调用 CF 模板:

resource "aws_cloudformation_stack" "xxx" {

name = "xxx-stack"

template_body = file("../cloudformation/xxx_CloudFormation_template_2.1.1.json")

parameters = {
VpcId = aws_vpc.xxxvpc.id
SubnetCidrBlock = var.aws_vpc_cidr
AvailabilityZones = var.aws_azs
InstanceType = "m5.4xlarge"
ExternalNet = "0.0.0.0/0"
....
}

on_failure = "DELETE"
}

地点:

variable "aws_azs" {
default = ["us-east-1a", "us-east-1b", "us-east-1c"]
}

我收到错误:

Inappropriate value for attribute "parameters": element "AvailabilityZones": string required.

我已经尝试了该主题的许多变体,但我不知道如何将 AZ 列表从 TF 传递到 CF 模板。

我对错误消息中需要字符串的断言也感到非常困惑,因为 CF 模板中的参数类型被定义为列表。

请问有什么想法吗?

最佳答案

我更愿意使用 templatefile 函数,而不是您在 template_body 字段中使用的 file。您可以在那里传递变量,并使用漂亮的模板引擎用传递的变量填充模板。您可以在那里使用变量、函数、语句和循环。

示例在这里 https://www.terraform.io/docs/language/functions/templatefile.html

你的例子

resource "aws_cloudformation_stack" "xxx" {

....

template_body = templatefile("../cloudformation/xxx_CloudFormation_template_2.1.1.json", {
aws_azs = var. aws_azs
})

....
}

和你的 cf 文件:

 "AvailabilityZones" : {
"Description" : "List of Availability Zones used ${join(',', aws_azs)} ",
"Type" : "List<AWS::EC2::AvailabilityZone::Name>"
},

关于amazon-web-services - 如何将可用区列表从 Terraform 传递到 CloudFormation 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69681019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com