2017-09-21 12 views
0

私はTerraformを試しています。私の興味深いCloudFormationスタックの1つをTFに翻訳しています。スタックの重要な部分には、テンプレートのカスタムリソースを指定する次の宣言が含まれています。このラムダはAMIのリストを照会し、その記述をフィルタに基づいてコンテキストの最新のものを選択します。TerraformのカスタムCloudFormationリソース

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

私はTerraformドキュメントを見回しましたが、私はこのリソースをどのように指定できるかわかりません。 CloudFormationにカスタムリソース用のTerraformアナログはありますか?

答えて

2

CFコードは、あなたがDescription: ubuntu-16.04と最新のAMIのID(フィルタを取得するために呼び出しにラムダ関数を掲載。テラフォームで行うための簡単な方法があります。

あなたは、データソースを必要とする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*"] 
    } 
} 
+0

興味深い!これは間違いなくこのユースケースではうまくいくようですが、カスタムリソースを持つ他のいくつかのテンプレートではもっと複雑なことがあります。カスタムリソースを一般的に指定する方法があればうれしいでしょう - これは単なる例です。 –

+0

ラムダ関数 'arn:aws:lambda:us-east-1:XXXXXXX:function:GetLatestAMI'をテラフォームに変換する必要があります。 – BMW

関連する問題