Terraform 解析 Cloudformation 输出

标签 terraform aws-cloudformation

我有一个 terraform 部署,它从 CloudFormation 堆栈部署 SNS 主题。 我导出了 SNS 主题的 ARN,但我正在努力消耗 TF 中的输出

      "Outputs" : {
    "ARN" : {
      "Description" : "Email SNS Topic ARN",
      "Value" : { "Ref" : "EmailSNSTopic" }
    }
  }
}

输出是 ARN。 但是我如何构造outputs.tf 文件以允许我在其他 TF 文件中获取 cf 输出?

cf 堆栈名称被命名为“TOPIC”作为示例,导出为“ARN” 阅读 TF 文档,他们有一个示例,但失败了:

data "aws_cloudformation_export" "arn" {
  name = "myARN"
}

resource "aws_instance" "web" {
  ami           = "ami-abb07bcb"
  instance_type = "t2.micro"
  subnet_id     = data.aws_cloudformation_export.myarn.value
}

这是正确的吗?

谢谢 尼克

最佳答案

TF 模块看起来不对。试试这个

data "aws_cloudformation_export" "my_subnet_id" {
  name = "[NAME_OF_EXPORT]"
}

resource "aws_instance" "web" {
  ami           = "ami-abb07bcb"
  instance_type = "t2.micro"
  subnet_id     = data.aws_cloudformation_export.my_subnet_id.value
}

并确保 name 属性拼写为 aws cloudformation list-exports 的输出,并且您位于同一区域!!

CF 导出的值在每个帐户的给定区域中必须是唯一的,因此您无需引用 CF 模板或堆栈名称。

关于Terraform 解析 Cloudformation 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64541206/

相关文章:

azure - 如何处理 Azure VM 中 Terraform 中的多个 storage_os_disk block ?

openssl - 如何在 Terraform 中为 .htpasswd 文件生成有效的密码哈希?

amazon-web-services - SAM/无服务器/CodeBuild 说明

aws-cloudformation - 如何在serverless.yml中引用二级索引?

amazon-web-services - 无法为作为 AWS::CloudFormation::CustomResource 执行的 aws lambda 函数设置环境变量

openstack - 添加资源时 Terraform 身份验证不起作用

azurerm - Terraform 的行为不符合预期

amazon-web-services - 通过 Cloudformation 模板将 Lambda 函数添​​加到 Kinesis Firehose 中

aws-lambda - 无法从云形成 yaml 中的条件函数返回整数

java - 使用 Terraform 创建 Azure Function App 时如何设置 java 版本?