EC2实例-cloudformation模板-给出错误“模板验证错误:模板错误:无法获取RegionMap :: us-west-2 :: AMI的映射”

Jas*_*son 5 aws-cloudformation

我已经编写了一个简单的Cloudformation模板来使用“映射”。以下是代码。我已经登录us-west-2a(西海岸)并运行了我的模板。我有3个默认子网。我在映射部分给出的AMI是由我创建的:

我希望当我输入us-west-2a作为参数时,它应该按照以下代码选择ami-fcccdf85。但是它说

模板错误:无法获取RegionMap :: us-west-2 :: AMI的映射”

 "RegionMap" : {
            "us-east-1"      : { "AMI" : "ami-48b4bf31" },
            "us-west-2a"      : { "AMI" : "ami-fcccdf85" },
            "us-west-1"      : { "AMI" : "ami-48b4bf31" }     
        }
Run Code Online (Sandbox Code Playgroud)

码:

{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "EC2 Head Node Instance ",
"Parameters": {
    "AvailabilityZone": {
        "Description": "Availablity Zone",
        "Type": "String"

    },
    "Region":{
        "Description": "Dev/Test/Prod regions",
        "Type": "String"
    },

    "Subnet": {
        "Description": "subnet to launch virtual server in",
        "Type": "AWS::EC2::Subnet::Id"
    }

},
"Mappings" : {
        "RegionMap" : {
            "us-east-1"      : { "AMI" : "ami-48b4bf31" },
            "us-west-2a"      : { "AMI" : "ami-fcccdf85" },
            "us-west-1"      : { "AMI" : "ami-48b4bf31" }     
        }
    },

"Resources": {
    "EC2Instance": {
        "Type": "AWS::EC2::Instance",
        "Properties": {
            "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]},
            "SubnetId": {"Ref": "Subnet"},
            "AvailabilityZone": {"Ref": "AvailabilityZone"},
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "Head Node in DEV region"
                }
            ]
            }
        }

},
"Outputs": {
    "InstanceId": {
        "Value": {"Ref": "EC2Instance"},
        "Description": "ID of virtual server"
    },

    "PublicIPAddress": {
        "Value": {"Fn::GetAtt": ["EC2Instance", "PublicIp"]},
        "Description": "public IP address of virtual server"
    }
   }
}
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

Ant*_*ssi 4

您输入“us-west-2a”,删除 a 应为“us-west-2” AMI 是特定于区域的,而不是特定于 AZ(可用区)的,换句话说,您必须指定一个区域。