J'essaie d'utiliser fn::sub
avec une référence à l'intérieur.
J'ai une chaîne "Commenter xyz $ {NAME}". Cette chaîne est fournie en tant que paramètre à la pile. Dites que le nom du paramètre est "test".
Je voudrais maintenant remplacer le $ {NAME} dans la chaîne en utilisant fn::sub
fonction dans le script Cloudformation.
fn::sub:[{"Ref":"test"},{"NAME":"balaji"}]
Sortie attendue est "Commentaire xyz balaji".
Cependant, c'est l'erreur que j'obtiens:
Erreur de validation de modèle: Erreur de modèle: Une ou plusieurs fonctions intrinsèques Fn :: Sub ne spécifient pas les arguments attendus. Spécifiez une chaîne comme premier argument et un deuxième argument facultatif pour spécifier un mappage de valeurs à remplacer dans la chaîne
Faites-moi savoir ce qui doit être corrigé ici.
Selon le docs , le premier paramètre dans Fn::Sub
doit être:
Une chaîne avec des variables qu'AWS CloudFormation remplace par leurs valeurs associées lors de l'exécution. Écrivez les variables sous $ {MyVarName}. Les variables peuvent être des noms de paramètres de modèle, des ID logiques de ressource, des attributs de ressource ou une variable dans une mappe de valeurs-clés. Si vous spécifiez uniquement des noms de paramètres de modèle, des ID logiques de ressources et des attributs de ressources, ne spécifiez pas de mappage de valeurs-clés.
(Je souligne.)
Ainsi, il est (au moment de la rédaction) impossible de le faire.
Si vous aviez un paramètre:
"test": {
"Type": "String",
"Default": "Comment xyz ${NAME}"
}
Et puis une substitution:
"Fn::Sub": ["${test}", {"NAME": "balaji"}]
La substitution produirait la chaîne littérale Comment xyz ${NAME}
.