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*"]
}
}
我正在试用 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*"]
}
}