Utilisation de références dynamiques pour spécifier les valeurs de modèle - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de références dynamiques pour spécifier les valeurs de modèle

Les références dynamiques constituent un moyen compact et puissant de spécifier des valeurs externes qui sont stockées et gérées dans d'autres services, tels que le magasin de paramètres Systems Manager et AWS Secrets Manager dans vos modèles de pile. Lorsque vous utilisez une référence dynamique, CloudFormation récupère la valeur de la référence spécifiée lorsque cela est nécessaire pendant les opérations de pile et de modification des ensembles.

CloudFormation prend actuellement en charge les modèles de référence dynamiques suivants :

  • ssm, pour les valeurs en texte brut stockées dans AWS Systems Manager Parameter Store.

  • ssm-secure, pour les chaînes sécurisée stockées dans AWS Systems Manager Parameter Store.

  • secretsmanager, pour les secrets complets ou les valeurs secrètes stockés dans AWS Secrets Manager.

Considérations à prendre en compte lors de l'utilisation de références dynamiques

Vous trouverez ci-dessous les points à prendre en compte lors de l'utilisation de références dynamiques :

Important

Nous vous déconseillons vivement d'inclure des références dynamiques, ou toute donnée sensible, dans les propriétés des ressources qui font partie de l'identifiant principal d'une ressource.

Lorsqu'un paramètre de référence dynamique est inclus dans une propriété qui constitue un identifiant de ressource principal, il CloudFormation peut utiliser la valeur réelle en texte brut dans l'identifiant de ressource principal. Cet ID de ressource peut apparaître dans toutes les sorties ou destinations dérivées.

Pour déterminer les propriétés de ressource qui comprennent l'identifiant principal d'un type de ressource, veuillez consulter la documentation de référence de la ressource pour cette ressource. Dans la section Valeurs renvoyées, la valeur de retour de la fonction Ref représente les propriétés de la ressource qui constituent l'identifiant principal du type de ressource.

  • Vous pouvez inclure jusqu'à 60 références dynamiques dans un modèle de pile.

  • Pour les transformations, telles que AWS::Include etAWS::Serverless, AWS CloudFormation ne résout pas les références dynamiques avant d'invoquer des transformations. Transmet AWS CloudFormation plutôt la chaîne littérale de la référence dynamique à la transformation. Les références dynamiques (y compris celles insérées dans le modèle traité comme résultat d'une transformation) sont résolues lorsque vous exécutez le jeu de modifications à l'aide du modèle.

  • Les références dynamiques pour des valeurs sécurisées, telles que ssm-secure et secretsmanager, ne sont actuellement pas prises en charge dans les ressources personnalisées.

Note

Ne créez pas de référence dynamique dont la valeur finale est une barre oblique inverse (\). AWS CloudFormation ne peut pas résoudre ces références, ce qui entraîne une défaillance des ressources.

Spécification de références dynamiques dans les modèles de pile

Les références dynamiques respectent le modèle suivant :

'{{resolve:service-name:reference-key}}' ou '{{resolve:ssm:[a-zA-Z0-9_.\-/]+(:\d+)?}}'.

service-name

Spécifie le service dans lequel la valeur est stockée et gérée.

Obligatoire.

Actuellement, les valeurs valides incluent :

  • ssm : paramètre en texte brut Systems Manager Parameter Store.

  • ssm-secure : paramètre de chaîne sécurisée Systems Manager Parameter Store.

    Note

    Actuellement, SecureString les paramètres ne sont pas pris en charge par Systems Manager dans les cn-northwest-1 régions cn-north-1 et.

    Pour plus d'informations, veuillez consulter la rubrique AWS Systems Manager Parameter Store dans le Guide de l'utilisateur AWS Systems Manager .

  • secretsmanager : secret de Secrets Manager.

reference-key

Clé de référence. Selon le type de référence dynamique, la clé de référence peut être composée de plusieurs segments.

Obligatoire.

Paramètres SSM

Utilisez la référence dynamique ssm pour inclure les valeurs stockées dans Systems Manager Parameter Store et de type String ou StringList dans vos modèles.

Modèle de référence

Pour les paramètres SSM, le segment reference-key se compose du nom du paramètre et du numéro de version. Utilisez le modèle suivant :

'{{resolve:ssm:parameter-name:version}}'

Votre référence doit respecter le modèle d'expression régulière suivant pour parameter-name et version :

'{{resolve:ssm:[a-zA-Z0-9_.-/]+:\\d+}}'

parameter-name

Nom du paramètre dans Systems Manager Parameter Store. Le nom du paramètre est sensible à la casse.

Obligatoire.

Version

Nombre entier qui spécifie la version du paramètre à utiliser. Si vous ne spécifiez pas la version exacte, CloudFormation utilise la dernière version du paramètre chaque fois que vous créez ou mettez à jour la pile. Pour plus d'informations, veuillez consulter la rubrique Utilisation des versions de paramètre dans le Guide de l'utilisateur AWS Systems Manager

Facultatif.

Exemple

L'exemple suivant utilise une référence dynamique ssm pour définir le contrôle d'accès pour un compartiment S3 sur une valeur de paramètre stockée dans Systems Manager Parameter Store. Comme indiqué, CloudFormation utilisera la version 2 du S3AccessControl paramètre pour les opérations de pile et de modification des ensembles.

JSON

"MyS3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "{{resolve:ssm:S3AccessControl:2}}" } }

YAML

MyS3Bucket: Type: 'AWS::S3::Bucket' Properties: AccessControl: '{{resolve:ssm:S3AccessControl:2}}'

Pour spécifier un paramètre stocké dans Systems Manager Parameter Store, vous devez disposer d'un accès permettant d'appeler GetParameters pour le paramètre spécifié. Pour plus d'informations, veuillez consulter la rubrique Contrôle de l'accès aux paramètres Systems Manager dans le Guide de l'utilisateur AWS Systems Manager .

Autres considérations à noter lorsque vous utilisez le modèle de référence dynamique ssm :

  • Actuellement, CloudFormation ne prend pas en charge l'accès aux paramètres SSM entre comptes.

  • Pour les ressources personnalisées, CloudFormation résout les références ssm dynamiques avant d'envoyer la demande à la ressource personnalisée. Pour plus d’informations, consultez Ressources personnalisées.

  • CloudFormation ne prend pas en charge l'utilisation d'étiquettes de paramètres ou de paramètres publics dans les références dynamiques.

    Une étiquette de paramètre est un alias défini par l'utilisateur pour vous aider à gérer les différentes versions d'un paramètre. Pour plus d'informations, veuillez consulter la rubrique Étiquetage des paramètres dans le Guide de l'utilisateur AWS Systems Manager .

    Un paramètre public est un paramètre fourni par un AWS service pour être utilisé avec ce service, et stocké dans AWS Systems Manager Parameter Store. Pour obtenir un exemple de paramètre public, consultez Extraction de métadonnées Amazon ECS-optimized AMI dans le Amazon Elastic Container Service Developer Guide.

  • CloudFormation ne prend actuellement pas en charge la détection de dérive sur les références dynamiques. Pour les références ssm dynamiques pour lesquelles vous n'avez pas spécifié la version du paramètre, nous vous recommandons, si vous mettez à jour la version du paramètre dans SSM, d'effectuer également une opération de mise à jour de pile sur toutes les piles qui incluent la référence ssm dynamique, afin d'extraire la dernière version du paramètre.

  • Pour vérifier quelle version d'une référence ssm dynamique sera utilisée dans une opération de pile, créez un jeu de modifications pour l'opération de pile. Ensuite, examinez le modèle traité sous l'onglet Template (Modèle).

  • Les paramètres SSM sans version ne sont pas pris en charge dans le bloc des paramètres, utilisez plutôt les types de paramètres SSM. Si vous utilisez des paramètres SSM, vous devez spécifier une version du paramètre Systems Manager AWS CloudFormation à utiliser.

Paramètres de chaîne sécurisée SSM

Utilisez le modèle de référence ssm-secure dynamique pour spécifier les paramètres AWS Systems Manager SecureString de type dans vos modèles. Pour les références ssm-secure dynamiques, AWS CloudFormation ne stocke jamais la valeur réelle du paramètre. AWS CloudFormation accède à la valeur du paramètre lors des opérations de création et de mise à jour pour les piles et les ensembles de modifications. Actuellement, les paramètres de chaîne sécurisée ne peuvent être utilisés que pour les propriétés de ressource qui prennent en charge le modèle de référence dynamique ssm-secure.

Un paramètre de chaîne sécurisée correspond à des données sensibles qui doivent être stockées et référencées de manière sécurisée. En d'autres termes, des données que vous ne voulez pas que les utilisateurs modifient ou référencent en texte clair, telles que des mots de passe ou des clés de licence. Pour plus d'informations sur les chaînes sécurisées, veuillez consulter la rubrique Utilisation de paramètres de chaîne sécurisée dans le Guide de l'utilisateur AWS Systems Manager .

Les valeurs des paramètres de chaîne sécurisée ne sont pas stockées CloudFormation et ne sont renvoyées dans aucun résultat d'appel d'API.

Modèle de référence

Pour les références dynamiques ssm-secure, le segment reference-key se compose du nom du paramètre et du numéro de version. Utilisez le modèle suivant :

'{{resolve:ssm-secure:parameter-name:version}}'

Votre référence doit respecter le modèle d'expression régulière suivant pour parameter-name et version :

'{{resolve:ssm-secure:[a-zA-Z0-9_.-/]+:\\d+}}'

parameter-name

Nom du paramètre dans Systems Manager Parameter Store. Le nom du paramètre est sensible à la casse.

Obligatoire.

Version

Nombre entier qui spécifie la version du paramètre à utiliser. Si vous ne spécifiez pas la version exacte, AWS CloudFormation utilise la dernière version du paramètre chaque fois que vous créez ou mettez à jour la pile. Pour plus d'informations, veuillez consulter la rubrique Utilisation des versions de paramètre dans le Guide de l'utilisateur AWS Systems Manager

Facultatif.

Exemple

L'exemple suivant utilise une référence dynamique ssm-secure pour définir le mot de passe d'un utilisateur IAM vers une valeur sécurisée stockée dans Systems Manager Parameter Store. Comme indiqué, CloudFormation utilisera la version 10 du IAMUserPassword paramètre pour les opérations de pile et de modification des ensembles.

JSON

"MyIAMUser": { "Type": "AWS::IAM::User", "Properties": { "UserName": "MyUserName", "LoginProfile": { "Password": "{{resolve:ssm-secure:IAMUserPassword:10}}" } } }

YAML

MyIAMUser: Type: AWS::IAM::User Properties: UserName: 'MyUserName' LoginProfile: Password: '{{resolve:ssm-secure:IAMUserPassword:10}}'

Autres considérations à noter lorsque vous utilisez le modèle de référence dynamique ssm-secure :

  • CloudFormation ne renvoie pas la valeur réelle du paramètre pour les chaînes sécurisées dans les appels d'API, mais renvoie plutôt la référence dynamique littérale.

  • CloudFormation stocke la référence dynamique littérale, qui contient le nom du paramètre en texte brut de la chaîne sécurisée.

  • Pour les ensembles de modifications, CloudFormation compare la chaîne de référence dynamique littérale. Il ne résout pas et ne compare pas les valeurs réelles des références ssm-secure.

  • Les références dynamiques pour des valeurs sécurisées, telles que ssm-secure et secretsmanager, ne sont actuellement pas prises en charge dans les ressources personnalisées.

  • Dans les cas où vous CloudFormation devez annuler une mise à jour de pile, cette opération d'annulation de mise à jour échouera si la version précédemment spécifiée d'un paramètre de chaîne sécurisée n'est plus disponible. Dans ce cas, effectuez l'une des actions suivantes :

    • Utilisez CONTINUE_UPDATE_ROLLBACK pour ignorer la ressource.

    • Recréez le paramètre de chaîne sécurisée dans Systems Manager Parameter Store et mettez-le à jour jusqu'à ce que la version du paramètre atteigne la version utilisée dans le modèle. Ensuite, utilisez CONTINUE_UPDATE_ROLLBACK sans ignorer la ressource.

  • Actuellement, AWS CloudFormation ne prend pas en charge l'accès aux paramètres SSM entre comptes.

  • CloudFormation ne prend pas en charge l'utilisation d'étiquettes de paramètres ou de paramètres publics dans les références dynamiques.

    Une étiquette de paramètre est un alias défini par l'utilisateur pour vous aider à gérer les différentes versions d'un paramètre. Pour plus d'informations, veuillez consulter la rubrique Étiquetage des paramètres dans le Guide de l'utilisateur AWS Systems Manager .

    Un paramètre public est un paramètre fourni par un AWS service pour être utilisé avec ce service, et stocké dans AWS Systems Manager Parameter Store. Pour obtenir un exemple de paramètre public, consultez Extraction de métadonnées Amazon ECS-optimized AMI dans le Amazon Elastic Container Service Developer Guide.

Ressources qui prennent en charge les modèles de paramètre dynamique pour les chaînes sécurisées

Les ressources qui prennent en charge le modèle de référence dynamique ssm-secure incluent actuellement :

Secrets de Secrets Manager

La référence dynamique secretsmanager vous permet d'extraire des secrets entiers ou des valeurs de secrets stockés dans Secrets Manager en vue d'une utilisation dans vos modèles. Les secrets peuvent être des informations d'identification de base de données, des mots de passe, des clés d'API tierces ou un texte arbitraire. Secrets Manager vous permet de stocker et de contrôler l'accès à ces secrets de manière centralisée, de sorte que vous pouvez remplacer les informations d'identification codées en dur dans votre code (y compris les mots de passe) par un appel d'API à Secrets Manager pour récupérer le secret par programmation. Pour plus d'informations, voir Qu'est-ce que c'est AWS Secrets Manager ? dans le guide de AWS Secrets Manager l'utilisateur.

Considérations importantes lors de l'utilisation de références dynamiques pour les secrets de Secrets Manager

Vous devez tenir compte des considérations de sécurité importantes suivantes lorsque vous utilisez des références dynamiques pour spécifier des secrets Secrets Manager dans vos modèles de pile :

  • La référence dynamique secretsmanager peut être utilisée dans toutes les propriétés des ressources. L'utilisation de la référence secretsmanager dynamique indique que ni Secrets Manager ni CloudFormation les journaux ne doivent conserver de valeur secrète résolue. Toutefois, la valeur du secret peut s'afficher dans le service qui possède la ressource où elle est utilisée. Passez en revue vos données d'utilisation pour éviter toute fuite des données de secret.

  • La mise à jour d'un secret dans Secrets Manager ne le met pas automatiquement à jour dans CloudFormation. Pour mettre CloudFormation à jour une référence secretsmanager dynamique, vous devez effectuer une mise à jour de pile qui met à jour la ressource contenant la référence dynamique, soit en mettant à jour la propriété de ressource qui contient la référence secretsmanager dynamique, soit en mettant à jour une autre propriété de la ressource.

    Par exemple, supposons que dans votre modèle vous spécifiez la propriété MasterPassword d'une ressource AWS::RDS::DBInstance comme référence secretsmanager dynamique, puis créiez une pile à partir du modèle. Vous mettez ultérieurement à jour la valeur de ce secret dans Secrets Manager, mais ne mettez pas à jour la ressource AWS::RDS::DBInstance dans votre modèle. Dans ce cas, même si vous effectuez une mise à jour de pile, la valeur secrète de la propriété MasterPassword n'est pas mise à jour et reste la valeur secrète précédente.

    Vous pouvez également utiliser Secrets Manager pour faire pivoter automatiquement le secret pour un service et/ou une base de données sécurisés. Pour plus d'informations, veuillez consulter la rubrique Rotation de secrets AWS Secrets Manager.

  • Les références dynamiques pour des valeurs sécurisées, telles que secretsmanager, ne sont actuellement pas prises en charge dans les ressources personnalisées.

Autorisations nécessaires

Pour spécifier un secret stocké dans Secrets Manager, vous devez disposer d'un accès permettant d'appeler GetSecretValue pour le secret.

Modèle de référence

Pour les secrets Secrets Manager, le segment reference-key se compose de plusieurs segments, y compris de l'ID de secret, de la clé de valeur de secret, de l'étape de version et de l'ID de version. Utilisez le modèle suivant :

{{resolve:secretsmanager:secret-id:secret-string:json-key:version-stage:version-id}}

secret-id

Nom ou ARN du secret.

Pour accéder à un secret de votre AWS compte, il vous suffit de spécifier le nom du secret. Pour accéder à un secret dans un autre AWS compte, spécifiez l'ARN complet du secret.

Obligatoire.

secret-string

À l'heure actuelle, la seule valeur prise en charge est SecretString. L’argument par défaut est SecretString.

json-key

Le nom de clé de la paire clé-valeur dont vous voulez récupérer la valeur. Si vous ne spécifiez pas dejson-key, CloudFormation récupère l'intégralité du texte secret.

Ce segment peut ne pas inclure le caractère deux-points (: ).

version-stage

L'étiquette intermédiaire de la version du secret à utiliser. Secrets Manager utilise des étiquettes intermédiaires pour assurer le suivi des différentes versions pendant le processus de rotation. Si vous utilisez version-stage, ne spécifiez pas version-id. Si vous ne spécifiez ni version-stage ni version-id, alors la version par défaut est la version AWSCURRENT.

Ce segment peut ne pas inclure le caractère deux-points (: ).

version-id

L'identifiant unique de la version du secret à utiliser. Si vous spécifiez version-id, ne spécifiez pas version-stage. Si vous ne spécifiez ni version-stage ni version-id, alors la version par défaut est la version AWSCURRENT.

Ce segment peut ne pas inclure le caractère deux-points (: ).

Exemples

L'exemple suivant utilise les segments secret-name et json-key pour récupérer les valeurs de nom d'utilisateur et de mot de passe stockées dans le secret MyRDSSecret. Par défaut, la version de secret récupérée est la version avec la valeur d'étape de version de AWSCURRENT.

JSON

{ "MyRDSInstance": { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName": "MyRDSInstance", "AllocatedStorage": "20", "DBInstanceClass": "db.t2.micro", "Engine": "mysql", "MasterUsername": "{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}", "MasterUserPassword": "{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}" } } }

YAML

MyRDSInstance: Type: 'AWS::RDS::DBInstance' Properties: DBName: MyRDSInstance AllocatedStorage: '20' DBInstanceClass: db.t2.micro Engine: mysql MasterUsername: '{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}' MasterUserPassword: '{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}'

La spécification des segments suivants permet de récupérer le SecretString for MySecret.

'{{resolve:secretsmanager:MySecret}}' ou '{{resolve:secretsmanager:MySecret::::}}'

La spécification des segments suivants permet de récupérer la password valeur de MySecret.

'{{resolve:secretsmanager:MySecret:SecretString:password}}'

La spécification des segments suivants permettrait de récupérer le SecretString pour MySecret qui se trouve dans un autre AWS compte. Vous devez spécifier l'ARN secret complet pour accéder aux secrets d'un autre AWS compte.

'{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3}}'

La spécification des segments suivants permet de récupérer la password valeur correspondant à MySecret ce qui se trouve dans un autre AWS compte. Vous devez spécifier l'ARN secret complet pour accéder aux secrets d'un autre AWS compte.

'{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3:SecretString:password}}'

La spécification des segments suivants permet de récupérer la password valeur de la AWSPREVIOUS version de MySecret.

'{{resolve:secretsmanager:MySecret:SecretString:password:AWSPREVIOUS}}'