2017-04-06 4 views
0

使用にフォールバック:AWS Cloudformation:、パラメータとしてAMIを取るそうでない場合、私は次のようにセットアップCloudformationテンプレートをしたい地図

1)利用者からのパラメータを確認してください。提供されている場合は、それを使用します。

2)パラメータを指定しない場合は、戻って次のようなマップを使用してにフォール:

AWSRegionArch2AMI: 
    eu-central-1: 
     HVM64: ami-d11dc4ff 
    us-east-1: 
     HVM64: ami-a13749a2 
    us-west-1: 
     HVM64: ami-fdd8428a 

ここで重要な部分は、地域ごとのデフォルトです。リージョン間でテンプレートを使用する必要があるため、地域固有のデフォルトを設定する必要があります。

これを行うには良い方法がありますか?

答えて

0

これはConditionsを使用して実行できます。基本的には、定義したチェックに基づいて真または偽の変数を定義し、その値に基づいてテンプレートフォークを作成することができます。

{ 
    "AWSTemplateFormatVersion": "2010-09-09", 
    "Description": "Example mostly pulled from http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-sample-templates.html", 
    "Mappings": { 
     "AWSRegionArch2AMI": { 
      "eu-central-1": {"HVM64": "ami-d11dc4ff"}, 
      "us-east-1": {"HVM64": "ami-a13749a2"}, 
      "us-west-1": {"HVM64": "ami-fdd8428a"} 
     } 
    }, 
    "Parameters": { 
     "AMI": { 
      "Description": "AMI to use.", 
      "AllowedPattern": "(ami-[0-9a-f]{8}){0,1}", 
      "Default": "", 
      "Type": "String" 
     } 
    }, 
    "Conditions": { 
     "UseDefaultAMI": { 
      "Fn::Equals": [ 
       {"Ref": "AMI"}, 
       "" 
      ] 
     } 
    }, 
    "Resources": { 
     "EC2Instance": { 
      "Type": "AWS::EC2::Instance", 
      "Properties": { 
       "ImageId": { 
        "Fn::If": [ 
         "UseDefaultAMI", 
         {"Fn::FindInMap": [ 
           "AWSRegionArch2AMI", 
           {"Ref": "AWS::Region"}, 
           "HVM64" 
         ]}, 
         {"Ref": "AMI"} 
        ] 
       }, 
       "InstanceType": "m3.medium" 
      } 
     } 
    } 
} 
:以下

は、AMIの選択の方法を使用して単一EC2インスタンスを作成する例テンプレートであります

関連する問題