我正在尝试使用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模拟?
答案 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*"]
}
}