0

Comment déréférencer un paramètre au milieu d'une chaîne?Fichier modèle CloudFormation - comment utiliser la fonction ref au milieu d'une chaîne pour référencer un paramètre

Je dispose d'un fichier de modèle CloudFormation JSON qui prend un paramètre pour un nom de seau S3 (« BucketName ») à utiliser dans une politique IAM qui donne la permission de ce seau - politique ci-dessous:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Action": [ 
       "s3:GetObject", 
       "s3:ListObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::${Ref:BucketName}/*" 
      ], 
      "Effect": "Allow" 
     } 
    ] 
} 

"arn:aws:s3:::${Ref:BucketName}/" ne fonctionne pas;

"arn:aws:s3:::", {"Ref": "BucketName"}, "/" ne fonctionne pas non plus parce qu'il se lit comme une liste de chaînes au lieu d'une seule chaîne.

Je sais que je pourrais prendre l'entier arn en tant que paramètre au lieu de seulement le nom de compartiment, mais comment pourrais-je pouvoir référencer BucketName dans la chaîne?

Merci!

Répondre

2

Vous devez utiliser les fonctions intrinsèques pour concaténer une valeur statique avec une valeur Ref.

Fn::Join reference

Dans votre cas, cela conduirait à la construction suivante.

"Resource": [ 
    "Fn::Join": ["", ["arn:aws:s3:::", {"Ref":"BucketName"}] ] 
]