Terraform 中的自定义 CloudFormation 资源

Custom CloudFormation Resources in Terraform

我正在试用 Terraform,并且正在将我更有趣的 CloudFormation 堆栈之一转换为 TF。作为堆栈的关键部分包括以下声明,它指定模板的自定义资源 - 查询 AMI 列表并根据作为过滤器的描述为上下文选择最新的 Lambda。

  LatestAMI:
    Type: Custom::LatestAMI
    Properties:
      ServiceToken: arn:aws:lambda:us-east-1:XXXXXXX:function:GetLatestAMI
      Description: ubuntu-16.04

我查看了 Terraform 文档,但似乎无法找出如何指定此资源。 CloudFormation 中是否有自定义资源的 Terraform 模拟?

您发布的 CF 代码调用了一个 lambda 函数来获取最新的 ami id(使用 [=11= 进行过滤)。在 terraform 中有更简单的方法。

您需要数据源aws_ami

https://www.terraform.io/docs/providers/aws/d/ami.html

使用此数据源获取已注册 AMI 的 ID 以用于其他资源。

data "aws_ami" "latest_ami" {
  most_recent      = true
  executable_users = ["all"]

  filter {
    name   = "owner-alias"
    values = ["amazon"]
  }

  filter {
    name   = "name"
    values = ["*ubuntu-16.04*"]
  }
}