Amazon cloudformation 地形中的自定义云信息资源

Amazon cloudformation 地形中的自定义云信息资源,amazon-cloudformation,terraform,Amazon Cloudformation,Terraform,我正在尝试Terraform,并且正在将我的一个更有趣的CloudFormation堆栈翻译成TF。堆栈的关键部分包括以下声明,该声明指定了模板的自定义资源—一个Lambda,用于查询AMI列表并根据作为筛选器的描述为上下文选择最新的AMI LatestAMI: Type: Custom::LatestAMI Properties: ServiceToken: arn:aws:lambda:us-east-1:XXXXXXX:function:GetLatestA

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

  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(使用
说明进行筛选:ubuntu-16.04
。在Terraform中有一种更简单的方法

您需要数据源
aws\U ami

使用此数据源获取已注册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*"]
  }
}

您发布的CF代码调用lambda函数来获取最新的ami id(使用
说明进行筛选:ubuntu-16.04
。在terraform中有一种更简单的方法

您需要数据源
aws\U ami

使用此数据源获取已注册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*"]
  }
}

有趣!这看起来确实适用于此用例,但是我有一些其他模板,其中自定义资源可以做更复杂的事情。如果有一种方法可以指定一般的自定义资源,那就太好了-这只是一个示例。然后您需要转换lambda函数
arn:aws:lambda:us-east-1:XXXXXXX:funAction:GetLatestAMI
到terraform也一样。很有趣!这看起来肯定适用于此用例,但是我有一些其他模板,带有自定义资源,可以做更复杂的事情。如果有一种方法可以指定自定义资源,那就太好了-这只是一个示例。然后,您需要转换lambda function
arn:aws:lambda:us-east-1:XXXXXXX:function:GetLatestAMI
也可用于地形。