web-dev-qa-db-fra.com

Comment échapper à "$ {}" dans les informations cloud "Fn :: Sub"

Je souhaite que cette ressource fonctionne avec le !Sub (ou Fn::Sub) fonction intrinsèque

Resource: !Sub 'arn:aws:iam::${AWS::AccountId}:user/${aws:username}'

Le aws:username est un variable pollicy qui ne doit pas être remplacé.

Une solution consisterait à utiliser Fn::Join à la place et écrivez un peu plus de code standard.

Mieux: pouvez-vous échapper au ${aws:username} pour que !Sub fonctionnera ici? Malheureusement, la documentation ne mentionne rien sur l'évasion.

25
mana

Vous pouvez réellement échapper les caractères "$" avec "$ {!}".

Votre ressource ressemblerait donc à ceci:

Resource: !Sub 'arn:aws:iam::${AWS::AccountId}:user/${!aws:username}'

Il est mentionné dans le docs sous la section des paramètres de chaîne.

Pour écrire un signe dollar et des accolades ($ {}) littéralement, ajoutez un point d'exclamation (!) Après l'accolade ouverte, tel que $ {! Literal}. AWS CloudFormation résout ce texte en $ {Literal}.

50
jens walter