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.?
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 !
GetAtt
pour faire référence à la valeur. ( http://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html )AWS::Include
transformer pour faire référence à un extrait de modèle dans S3 ( http://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to- your-template-with-aws-include-transform.html ), dans ce cas, vous n'utilisez pas vraiment de variables, bien sûr.