web-dev-qa-db-fra.com

Comment référencer une variable dérivée dans Cloudformation

Je suis à la recherche d'une petite aide dans le cloud et je n'ai pas pu trouver d'aide dans la documentation ou je ne recherche peut-être pas la question correctement.

Voici la question.

J'obtiens des zones de disponibilité pour l'environnement à partir des mappages comme suit.

"AvailabilityZone": {
"Fn::Select": [
    "1",
    {
        "Fn::FindInMap": [
            "Environment",
            {
                "Ref": "EnvType"
            },
            "AvailabilityZones"
        ]
    }
]

}

Je dois utiliser le nom AZ dans ma convention de dénomination de volume. Comment pourrait à nouveau référencer la variable dérivée "AvailabilityZone".?

Actuellement, je fais cela.

    {
    "Key": "Name",
    "Value": {
        "Fn::Join": [
            "-",
            [
                {
                    "Ref": "NamePrefix"
                },
                {
                    "Ref": "EnvType"
                },
                "myconstant",
                {
                    "Fn::Select": [
                        "2",
                        {
                            "Fn::Split": [
                                "-",
                                {
                                    "Fn::Select": [
                                        "1",
                                        {
                                            "Fn::FindInMap": [
                                                "Environment",
                                                {
                                                    "Ref": "EnvType"
                                                },
                                                "AvailabilityZones"
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        ]
    }
}

Je fais le même code deux fois. Comment puis-je réutiliser la variable dérivée ici.?

10
Srini

Malheureusement, la réponse courte est que vous ne pouvez pas. Espérons qu'un jour AWS prendra en charge les variables dans CloudFormation.

Il y a quelques hacks qui pourraient être intéressants. Accent sur hack !

17
Paulo Schreiner