gpt4 book ai didi

json - Terraform 中的参数化 YAML 模板

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

我即将为一个业务项目重构一些代码。除其他事项外,从 JSON 转换为 YAML 模板是必要的。我使用 terraform 进行基础设施部署。

我有这个 JSON 模板 cf_sns.json.tpl 文件:

{
"AWSTemplateFormatVersion": "2010-09-09",
"Resources": {
"SNSTopic": {
"Type": "AWS::SNS::Topic",
"Properties": {
"TopicName": "${sns_topic_name}",
"KmsMasterKeyId": "${kms_key_id}",
"DisplayName": "${sns_topic_name}",
"Subscription": [
"${sns_subscription_list}"
]
}
}
},
"Outputs" : {
"SNSTopicARN" : {
"Description": "The SNS Topic Arn",
"Value" : { "Ref" : "SNSTopic" }
}
}
}

这是一个使用此模板文件的 main.tf 文件:

data "template_file" "this" {
template = "${file("${path.module}/templates/cf_sns.json.tpl")}"
vars = {
kms_key_id = var.kms_key_id
sns_topic_name = var.sns_topic_name
sns_subscription_list = join(",", formatlist("{\"Endpoint\": \"%s\",\"Protocol\": \"%s\"}", var.sns_subscription_email_address_list, "email"))

}
}

我将["myemail", "myOtherEmail"]传递给var.sns_subscription_email_adress_list。我必须将这种方法与 cloudformation 资源结合使用,因为 Terraform 不支持 sns 订阅的 email 协议(protocol)。

如何将 cf_sns.json.tpl 与上面提到的 main.tf 文件中的数据资源一起重构为 YAML 文件?特别是,我不知道如何正确地将 sns_subscription_list 作为 YAML 数组传递。

最佳答案

那个 cf_sns.json.tpl 是 AWS CloudFormation 代码,如果您已经在使用 terraform,只需一路重构它,不仅仅是从 JSON 转换为 YAML,而是完全摆脱它并使用适当的地形资源:

这里是一些示例代码:

resource "aws_sns_topic" "SNSTopic" {
name = var.sns_topic_name
kms_master_key_id = var.kms_key_id
display_name = var.sns_topic_name
}

output "SNSTopicARN" {
value = aws_sns_topic.SNSTopic.arn
}

关于json - Terraform 中的参数化 YAML 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62265755/

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