Функция Cloud Formation не присваивает значение значению для ключа в теге - PullRequest
0 голосов
/ 16 мая 2018

У меня есть следующий шаблон Cloud Formation для создания VPC. Имя VPC генерируется на основе региона и среды, в которой был создан шаблон. VPC создает без каких-либо проблем, и при запуске aws cloud formation validate-template --template-url https://foo.template ни один из синтаксисов не жалуется.

Я ожидаю, что VPC будет назван:

VPC-UW1-д-фс

Вместо этого на VPC остается пустое имя, а тег имени имеет пустое значение. Я не правильно использую эту функцию? Если я уберу использование функции Fn::FindInMap, я получу сгенерированное имя - в нем просто отсутствует отображаемое значение среды.

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "VPC for a new environment to use.",
    "Parameters": {
        "EnvironmentName": {
            "Description": "Name of the environment that this VPC will be used for.",
            "Type": "String",
            "MinLength": "2",
            "MaxLength": "20",
            "AllowedPattern": "[a-zA-Z]*",
            "AllowedValues": [
                "Development",
                "QA",
                "Test",
                "Production"
            ]
        }
    },
    "Resources": {
        "VPC": {
            "Type": "AWS::EC2::VPC",
            "Properties": {
                "CidrBlock": "10.0.0.0/16",
                "EnableDnsSupport": false,
                "EnableDnsHostnames": false,
                "InstanceTenancy": "default",
                "Tags": [ { 
                    "Key": "Name",
                    "Value": {
                        "Fn::Join": [
                            "-",
                            [
                                "vpc",
                                { "Ref": "AWS::Region" },
                                { "Fn::FindInMap": [
                                    "EnvironmentMap", { "Ref": "EnvironmentName" }, "AbbreviatedName"
                                ]},
                                "fs"
                            ]
                        ]
                    }
                }]
            }
        }
    },
    "Mappings": {
        "RegionMap": {
            "us-east-1": {
                "regionName": "ue1"
            },
            "us-west-1": {
                "regionName": "uw1"
            }
        },
        "EnvironmentMap": {
            "Development": { 
                "AbbreviatedName": "d"
            },
            "QA": { 
                "AbbreviatedName": "qa"
            },
            "Test": { 
                "AbbreviatedName": "t"
            },
            "Production": { 
                "AbbreviatedName": "p"
            }
        }
    },
    "Outputs": {

    }
}

1 Ответ

0 голосов
/ 16 мая 2018

Ваш шаблон отлично работает для меня.

Я запустил его в ap-southeast-2 регионе, и он выдал тег:

  • Имя: vpc-ap-southeast-2-d-fs

(RegionMap не используется в данном шаблоне.)

...