Terraform中的自定义CloudFormation资源

时间:2017-09-21 11:26:47

标签: amazon-cloudformation terraform

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

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

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

1 个答案:

答案 0 :(得分:2)

您发布的CF代码调用lambda函数来获取最新的ami id(使用Description: ubuntu-16.04过滤。在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*"]
  }
}