2017-02-03 5 views
2

私はCloudFormationプロセスがかなり新しくなっていますので、私はいくつかの進歩を遂げていますが、私は環境パラメータと地域のマッピングをベースにしたいと考えています。AWS CloudFormationは地域間で異なる環境をマッピングします

{ 
    "AWSTemplateFormatVersion": "2010-09-09", 
    "Description": "Basic stack", 
    "Parameters": { 

    "EnvironmentType": { 
     "Description": "Production or Development environment", 
     "Type": "String", 
     "AllowedValues": ["Prod", "Dev"], 
     "ConstraintDescription": "Must be an allowed value" 
    } 
    }, 

    "Mappings":{ 
    "VPC": { 
     "Prod": { 
     "us-east-1" : "vpc-12345678", 
     "eu-central-1" : "vpc-abcdefgh", 
     "ap-southeast-1" : "vpc-abcd1234" 
     }, 
     "Dev": { "us-east-1" : "vpc-1234efgh" } 
    } 
    }, 

    "Resources": { 
    "ApplicationSecurityGroup": { 
     "Type": "AWS::EC2::SecurityGroup", 
     "Properties": { 
     "VpcId": { 
      "Fn::FindInMap" : [ 
      "VPC", 
       { "Ref" : "EnvironmentType" }, 
       { "Ref": "AWS::Region" } 
      ] 
     }, 
     "SecurityGroupEgress": [ 
      { 
      "IpProtocol": "tcp", 
      "FromPort": "80", 
      "ToPort": "80", 
      "CidrIp": "0.0.0.0/0" 
      }, 
      { 
      "IpProtocol": "tcp", 
      "FromPort": "443", 
      "ToPort": "443", 
      "CidrIp": "0.0.0.0/0" 
      } 
     ] 
     } 
    } 
    } 
} 

私はこれを試してみると、テンプレートのフォーマットエラー 'マッピング属性名' us-east-1 'は英数字のみでなければなりません。

環境と地域に基づいて適切なVPC IDを選択するにはどうすればよいですか?

答えて

2

EnvironmentType続いAWS::RegionFn::FindInMapに渡さあなたの2つのマッピング層反転してみてください。これは素晴らしいおかげで働いた

{ 
    "AWSTemplateFormatVersion": "2010-09-09", 
    "Description": "Basic stack", 
    "Parameters": { 

    "EnvironmentType": { 
     "Description": "Production or Development environment", 
     "Type": "String", 
     "AllowedValues": ["Prod", "Dev"], 
     "ConstraintDescription": "Must be an allowed value" 
    } 
    }, 

    "Mappings":{ 
    "VPC": { 
     "us-east-1": { 
     "Prod": "vpc-12345678", 
     "Dev": "vpc-1234efgh" 
     }, 
     "eu-central-1": { 
     "Prod": "vpc-abcdefgh" 
     }, 
     "ap-southeast-1": { 
     "Prod": "vpc-abcd1234" 
     } 
    } 
    }, 

    "Resources": { 
    "ApplicationSecurityGroup": { 
     "Type": "AWS::EC2::SecurityGroup", 
     "Properties": { 
     "VpcId": { 
      "Fn::FindInMap" : [ 
      "VPC", 
      { "Ref": "AWS::Region" }, 
      { "Ref" : "EnvironmentType" } 
      ] 
     }, 
     "SecurityGroupEgress": [ 
      { 
      "IpProtocol": "tcp", 
      "FromPort": "80", 
      "ToPort": "80", 
      "CidrIp": "0.0.0.0/0" 
      }, 
      { 
      "IpProtocol": "tcp", 
      "FromPort": "443", 
      "ToPort": "443", 
      "CidrIp": "0.0.0.0/0" 
      } 
     ] 
     } 
    } 
    } 
} 
+0

を! –

関連する問題