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.
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}.