J'utilise la fonction! Sub dans mes modèles CloudFormation Yaml. Et quand il est utilisé comme une valeur de propriété de l'objet, il travaille pour moiAWS Cloud Formation! Fonctions Sub &! Ref dans les politiques AWS :: Serverless :: Function
Object:
Property1: !Sub some-value-with-a-${variable}-in-it
La valeur de la variable sera remplacé comme prévu.
Cependant, je ne peux pas comprendre comment utiliser la fonction Sub! Dans un élément d'un tableau de chaînes
Array:
- !Sub some-value-with-a-${variable}-in-it
élément de tableau devient juste ignoré.
J'essaie ceci dans le contexte d'un modèle SAM créant une ressource de type AWS :: Serverless :: Function. La propriété des politiques peut prendre un tableau de chaînes:
lambda:
Type: AWS::Serverless::Function
Properties:
CodeUri: api
FunctionName: !Sub api-${MyStageName}
Handler: Lambda:Api.Function::HandleAsync
Runtime: dotnetcore1.0
Policies:
- AWSLambdaBasicExecutionRole
- !Sub arn:aws:iam::${AWS::AccountId}:policy/some-policy
- arn:aws:iam::123456789:policy/another-policy
La fonction Sous travaille dans la propriété FunctionName
dans cet exemple. Mais je finis avec seulement 2 politiques attachées à mon rôle généré - AWSLambdaBasicExecutionRole
et arn:aws:iam::123456789:policy/another-policy
. Celui qui inclut la fonction !Sub
est ignoré.
J'ai essayé des options comme mettre la fonction sur une nouvelle ligne:
Array:
-
!Sub some value with a ${variable} in it
Quelqu'un peut-il aider?
Mise à jour
Melo a fait remarquer @ Tom que ce n'est pas un problème de tableau, donc je l'ai réglé ma question.
Une enquête plus approfondie a révélé qu'il est pas un problème de formation nuage exactement, mais très spécifique au type de ressource AWS::Serverless::Function
, et la propriété Policies
au sein. Je soupçonne que cela a quelque chose à voir avec le fait que la propriété Policies
est si flexible dans ce qu'il peut accepter. Il peut accepter des chaînes faisant référence à des noms de politique ou à Arns, et peut également accepter des documents de politique décrivant une nouvelle politique. Je soupçonne que cela signifie qu'il n'est pas capable de supporter les fonctions.
Il ne devrait pas y avoir de différence dans l'utilisation de '! Sub' avec un élément de tableau ou une valeur de mappage. Cela semble être un bug et devrait être signalé comme tel. J'essaierais de citer le scalaire après '! Sub'; Peut-être que c'est un bug de l'analyseur et si oui, cela pourrait être une solution de contournement. – flyx
Merci pour la réponse. Les citations ne fonctionnaient pas, donc je vais essayer d'enregistrer un bug –
Problème créé: https://forums.aws.amazon.com/thread.jspa?threadID=261756 –