【发布时间】:2020-09-27 15:15:58
【问题描述】:
我即将为一个商业项目重构一些代码。除其他外,从 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 协议。
如何将cf_sns.json.tpl 与上述main.tf 文件中提到的数据资源一起重构为YAML 文件?特别是,我不知道如何正确地将 sns_subscription_list 作为 YAML 数组传递。
【问题讨论】:
-
这是 Terraform 0.11?
-
是terraform 0.12.25
标签: json yaml refactoring terraform amazon-cloudformation