Malheureusement, mes expériences sont d'accord avec votre conclusion Graeme. J'ai du mal avec cela depuis un certain temps, mais je n'ai pas trouvé de moyen de calculer une chaîne via Fn :: Join et de la conserver pour plus tard dans le modèle.
Puis-je partager avec vous un exemple typique?
Au 18/09/2014, le moyen le plus sophistiqué de stocker une valeur de chaîne pour réutilisation dans la section Ressources serait via un mappage (de deuxième niveau). Mieux encore, je peux pré-calculer une condition et déterminer s'il faut utiliser la chaîne ou non. Mais malheureusement, le stockage d'une chaîne ne fonctionne tout simplement pas.
Voici un exemple de strophe d'une telle cartographie…
"LoadBalancerBucketMap": {
"BucketName": {
"string": {
"Fn::Join": [
"-",
[
"mylb",
{
"Ref": "Environment"
},
"logs"
]
]
}
}
},
Et voici une expression d'accès à elle dans une ressource
"S3BucketName": {
"Fn::FindInMap": [
"LoadBalancerBucketMap",
"BucketName",
"string"
}
Dans cet exemple, Environnement est un paramètre de chaîne littérale avec une valeur par défaut pratique. C'est donc un exemple très clair de création et de réutilisation d'une chaîne. Mais voici ce que dit le processeur CloudFormation…
Erreur de validation du modèle: Erreur de format du modèle: chaque attribut de mappage doit être une chaîne ou une liste.
Je partage donc votre frustration qu'il ne semble pas y avoir de moyen dans un modèle pour fournir l'effet d'une variable de chaîne temporaire.
… Pour autant que je puisse voir. Mais la réponse que vous avez reçue à l'origine disait le contraire (bien que sans exemple).
Donc, si quelqu'un a un exemple de solution de contournement, alors s'il vous plaît, pourrait-il le partager?