

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.

# Obtenir les valeurs stockées dans d’autres services à l’aide de références dynamiques
<a name="dynamic-references"></a>

Les références dynamiques vous permettent de spécifier facilement des valeurs externes stockées et gérées dans d'autres services et de dissocier les informations sensibles de vos infrastructure-as-code modèles. CloudFormation récupère la valeur de la référence spécifiée lorsque cela est nécessaire lors des opérations de pile et de modification des ensembles.

Grâce aux références dynamiques, vous pouvez :
+ **Utiliser des chaînes sécurisées** : pour les données sensibles, utilisez toujours des paramètres de chaîne sécurisés dans AWS Systems Manager Parameter Store ou des secrets AWS Secrets Manager pour vous assurer que vos données sont chiffrées au repos.
+ **Limiter l’accès** : limitez l’accès aux paramètres du magasin de paramètres ou aux secrets du gestionnaire de secrets aux seuls principaux et rôles autorisés.
+ **Rotation des informations d’identification** : effectuez régulièrement la rotation des données sensibles stockées dans Parameter Store ou Secrets Manager afin de maintenir un niveau de sécurité élevé.
+ **Rotation automatique** : tirez parti des fonctionnalités de rotation automatique de Secrets Manager pour mettre à jour et distribuer périodiquement vos données sensibles dans vos applications et environnements.

## Considérations d’ordre général
<a name="dynamic-references-considerations"></a>

Voici les considérations générales à prendre en compte avant de spécifier des références dynamiques dans vos CloudFormation modèles :
+ Évitez d'inclure des références dynamiques ou des données sensibles dans les propriétés des ressources qui font partie de l'identifiant principal d'une ressource. CloudFormation peut utiliser la valeur réelle en texte brut dans l'identifiant de ressource principal, ce qui peut présenter un risque de sécurité. Cet ID de ressource peut apparaître dans toutes les sorties ou destinations dérivées.

  Pour déterminer quelles propriétés de ressource constituent l’identifiant principal d’un type de ressource, reportez-vous à la documentation de référence de cette ressource dans la référence des [types de ressources et de propriétés AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-template-resource-type-ref.html). 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.
+ Si vous utilisez des transformations (comme `AWS::Include` ou`AWS::Serverless`), CloudFormation cela ne résout pas les références dynamiques avant d'appliquer la transformation. Au lieu de cela, il transmet la chaîne littérale de la référence dynamique à la transformation et résout les références lorsque vous exécutez le jeu de modifications à l’aide du modèle.
+ Les références dynamiques ne peuvent pas être utilisées pour les valeurs sécurisées (telles que celles stockées dans Parameter Store ou Secrets Manager) dans les ressources personnalisées. 
+ Les références dynamiques ne sont pas non plus prises en charge dans les métadonnées `AWS::CloudFormation::Init` et les propriétés Amazon EC2 `UserData`.
+ Ne créez pas de référence dynamique qui se termine par une barre oblique inverse (\$1). CloudFormationne peut pas résoudre ces références, ce qui entraînera l'échec des opérations de pile.

Les rubriques suivantes fournissent des informations et d’autres considérations sur l’utilisation de références dynamiques.

**Topics**
+ [Considérations d’ordre général](#dynamic-references-considerations)
+ [Obtenir une valeur en texte brut depuis le magasin de paramètres Systems Manager](dynamic-references-ssm.md)
+ [Obtenir une valeur de chaîne sécurisée depuis le magasin de paramètres Systems Manager](dynamic-references-ssm-secure-strings.md)
+ [Obtenir un secret ou une valeur secrète à partir du Secrets Manager](dynamic-references-secretsmanager.md)

# Obtenir une valeur en texte brut depuis le magasin de paramètres Systems Manager
<a name="dynamic-references-ssm"></a>

Lorsque vous créez un CloudFormation modèle, vous pouvez utiliser des valeurs en texte brut stockées dans Parameter Store. Parameter Store est une fonctionnalité de AWS Systems Manager. Pour une introduction à Parameter Store, consultez la section [Parameter Store AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) dans le *Guide de l’utilisateur AWS Systems Manager *. 

Pour utiliser une valeur en texte clair provenant de Parameter Store dans votre modèle, vous utilisez une référence dynamique `ssm`. Cette référence vous permet d’accéder aux valeurs des paramètres de type `String` ou `StringList` dans Parameter Store. 

Pour vérifier quelle version d’une référence dynamique `ssm` sera utilisée dans une opération de pile, créez un ensemble de modifications pour l’opération de pile. Ensuite, vérifiez le modèle traité dans l’onglet **Modèle**. Pour de plus amples informations, veuillez consulter [Création d'un ensemble de modifications pour une CloudFormation pile](using-cfn-updating-stacks-changesets-create.md).

Lorsque vous utilisez des références dynamiques `ssm`, il y a quelques points importants à garder à l’esprit :
+ CloudFormation ne prend pas en charge la détection de dérive sur les références dynamiques. Pour les références dynamiques `ssm` 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 Systems Manager, d’effectuer également une opération de mise à jour de pile sur toutes les piles qui incluent la référence dynamique `ssm`, afin d’extraire la dernière version du paramètre.
+ Pour utiliser une référence `ssm` dynamique dans la `Parameters` section de votre CloudFormation modèle, vous devez inclure un numéro de version. CloudFormation ne vous permet pas de référencer une valeur du Parameter Store sans numéro de version dans cette section. Vous pouvez également définir votre paramètre comme un paramètre de type Systems Manager dans votre modèle. Dans ce cas, vous pouvez spécifier une clé de paramètre Systems Manager comme valeur par défaut pour votre paramètre. CloudFormation récupérera ensuite la dernière version de la valeur du paramètre dans Parameter Store, sans que vous ayez à spécifier de numéro de version. Cela peut rendre vos modèles plus simples et plus faciles à gérer. Pour de plus amples informations, veuillez consulter [Spécifiez les ressources existantes au moment de l'exécution avec les CloudFormation types de paramètres fournis](cloudformation-supplied-parameter-types.md).
+ Pour les ressources personnalisées, CloudFormation résout les références `ssm` dynamiques avant d'envoyer la demande à la ressource personnalisée.
+ CloudFormation ne prend pas en charge l'utilisation de références dynamiques pour référencer un paramètre partagé par un autre Compte AWS.
+ CloudFormation ne prend pas en charge l'utilisation des libellés de paramètres de Systems Manager dans les références dynamiques.

## Permissions
<a name="dynamic-references-ssm-permissions"></a>

Pour spécifier un paramètre stocké dans le magasin de paramètres Systems Manager, vous devez disposer d’une autorisation pour appeler [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) le paramètre spécifié. Pour savoir comment créer des politiques IAM qui fournissent l’accès à des paramètres Systems Manager spécifiques, consultez la section [Restriction de l’accès aux paramètres Systems Manager à l’aide des politiques IAM](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-access.html) dans le *Guide de l’utilisateur AWS Systems Manager *.

## Modèle de référence
<a name="dynamic-references-ssm-pattern"></a>

Pour référencer une valeur en texte brut stockée dans le magasin de paramètres Systems Manager dans votre CloudFormation modèle, utilisez le modèle de `ssm` référence 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 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, consultez [Utilisation des versions de paramètre](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-versions.html) dans le *Guide de l’utilisateur AWS Systems Manager *.  
Facultatif.

## Exemples
<a name="dynamic-references-ssm-examples"></a>

**Topics**
+ [Paramètre ID d’AMI public](#dynamic-references-ssm-public-ami-example)
+ [Paramètre d’ID d’AMI personnalisé](#dynamic-references-ssm-custom-ami-example)

### Paramètre ID d’AMI public
<a name="dynamic-references-ssm-public-ami-example"></a>

L’exemple suivant crée une instance EC2 qui fait référence à un paramètre AMI public. La référence dynamique récupère le dernier identifiant AMI Amazon Linux 2023 à partir du paramètre public. Pour plus d’informations sur les paramètres publics, consultez [Découverte des paramètres publics dans le magasin de paramètres](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-finding-public-parameters.html) dans le *Guide de l’utilisateur AWS Systems Manager *.

#### JSON
<a name="dynamic-references-ssm-public-ami-example.json"></a>

```
{
    "Resources": {
        "MyInstance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}",
                "InstanceType": "t2.micro"
            }
        }
    }
}
```

#### YAML
<a name="dynamic-references-ssm-public-ami-example.yaml"></a>

```
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}'
      InstanceType: t2.micro
```

### Paramètre d’ID d’AMI personnalisé
<a name="dynamic-references-ssm-custom-ami-example"></a>

L’exemple suivant crée un modèle de lancement EC2 qui fait référence à un identifiant AMI personnalisé stocké dans le magasin de paramètres. La référence dynamique récupère l’ID AMI à partir de la version *`2`* du paramètre `golden-ami` chaque fois qu’une instance est lancée à partir du modèle de lancement.

#### JSON
<a name="dynamic-references-ssm-custom-ami-example.json"></a>

```
{
    "Resources": {
        "MyLaunchTemplate": {
            "Type": "AWS::EC2::LaunchTemplate",
            "Properties": {
                "LaunchTemplateName": {
                    "Fn::Sub": "${AWS::StackName}-launch-template"
                },
                "LaunchTemplateData": {
                    "ImageId": "{{resolve:ssm:golden-ami:2}}",
                    "InstanceType": "t2.micro"
                }
            }
        }
    }
}
```

#### YAML
<a name="dynamic-references-ssm-custom-ami-example.yaml"></a>

```
Resources:
  MyLaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties: 
      LaunchTemplateName: !Sub ${AWS::StackName}-launch-template
      LaunchTemplateData:
        ImageId: '{{resolve:ssm:golden-ami:2}}'
        InstanceType: t2.micro
```

# Obtenir une valeur de chaîne sécurisée depuis le magasin de paramètres Systems Manager
<a name="dynamic-references-ssm-secure-strings"></a>

Dans CloudFormation, vous pouvez utiliser des données sensibles telles que des mots de passe ou des clés de licence sans les exposer directement dans vos modèles en stockant les données sensibles sous forme de « chaîne sécurisée » dans AWS Systems Manager Parameter Store. Pour une introduction à Parameter Store, consultez la section [Parameter Store AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) dans le *Guide de l’utilisateur AWS Systems Manager *.

Pour utiliser une chaîne sécurisée Parameter Store dans votre modèle, vous devez utiliser une référence `ssm-secure` dynamique. CloudFormation ne stocke jamais la valeur réelle de la chaîne sécurisée. Au lieu de cela, il stocke uniquement la référence dynamique littérale, qui contient le nom du paramètre en clair de la chaîne sécurisée. 

Lors de la création ou de la mise à jour de la pile, CloudFormation accède à la valeur de chaîne sécurisée selon les besoins, sans exposer la valeur réelle. Les chaînes sécurisées ne peuvent être utilisées que pour les propriétés de ressources qui prennent en charge le modèle de référence dynamique `ssm-secure`. Pour de plus amples informations, veuillez consulter [Ressources qui prennent en charge les modèles de paramètre dynamique pour les chaînes sécurisées](#template-parameters-dynamic-patterns-resources).

CloudFormation ne renvoie la valeur réelle du paramètre pour les chaînes sécurisées dans aucun appel d'API. Elle renvoie uniquement la référence dynamique littérale. Lorsque vous comparez des modifications à l'aide d'ensembles de modifications, compare CloudFormation uniquement la chaîne de référence dynamique littérale. Il ne résout pas et ne compare pas les valeurs réelles des chaînes sécurisées.

Lorsque vous utilisez des références dynamiques `ssm-secure`, il y a quelques points importants à garder à l’esprit :
+ CloudFormation Impossible d'accéder aux valeurs du Parameter Store à partir d'autres sources Comptes AWS.
+ CloudFormation ne prend pas en charge l'utilisation d'étiquettes de paramètres ou de paramètres publics de Systems Manager dans les références dynamiques.
+ Dans les régions `cn-north-1` et `cn-northwest-1`, les chaînes sécurisées ne sont pas prises en charge par Systems Manager.
+ Les références dynamiques pour les valeurs sécurisées, telles que`ssm-secure`, ne sont actuellement pas prises en charge dans les ressources personnalisées.
+ S'il est CloudFormation nécessaire d'annuler une mise à jour de pile et que la version précédemment spécifiée d'un paramètre de chaîne sécurisé n'est plus disponible, l'opération de restauration échouera. Dans ce cas, deux options s’offrent à vous :
  + 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.

## Ressources qui prennent en charge les modèles de paramètre dynamique pour les chaînes sécurisées
<a name="template-parameters-dynamic-patterns-resources"></a>

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


| Ressource | Type de propriété | Propriétés | 
| --- | --- | --- | 
| [AWS::DirectoryService::MicrosoftANNONCE](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-directoryservice-microsoftad.html) |  | `Password` | 
| [AWS::DirectoryService::SimpleANNONCE](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-directoryservice-simplead.html) |  | `Password` | 
| [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-replicationgroup.html) |  | `AuthToken` | 
| [AWS::IAM::User](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html) | [LoginProfile](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-iam-user-loginprofile.html) | `Password` | 
| [AWS::KinesisFirehose::DeliveryStream](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-kinesisfirehose-deliverystream.html) | [RedshiftDestinationConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html) | `Password` | 
| [AWS::OpsWorks::App](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-app.html) | [Source](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-app-source.html) | `Password` | 
| [AWS::OpsWorks::Stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-stack.html) | [CustomCookbooksSource](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-stack-source.html) | `Password` | 
| [AWS::OpsWorks::Stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-stack.html) | [RdsDbInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-stack-rdsdbinstance.html) | `DbPassword` | 
| [AWS : :RDS : : DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbcluster.html) |  | `MasterUserPassword` | 
| [AWS : :RDS : : DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) |  | `MasterUserPassword`  | 
| [AWS::Redshift::Cluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-redshift-cluster.html) |  | `MasterUserPassword` | 

## Modèle de référence
<a name="dynamic-references-ssm-secure-pattern"></a>

Pour référencer une valeur de chaîne sécurisée depuis le magasin de paramètres Systems Manager dans votre CloudFormation modèle, utilisez le modèle de `ssm-secure` référence 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 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, consultez [Utilisation des versions de paramètre](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-versions.html) dans le *Guide de l’utilisateur AWS Systems Manager *.  
Facultatif.

## Exemple
<a name="dynamic-references-ssm-secure-example"></a>

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 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
<a name="dynamic-references-ssm-secure-example.json"></a>

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

### YAML
<a name="dynamic-references-ssm-secure-example.yaml"></a>

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

# Obtenir un secret ou une valeur secrète à partir du Secrets Manager
<a name="dynamic-references-secretsmanager"></a>

Secrets Manager est un service qui vous permet de stocker et de gérer en toute sécurité des informations confidentielles telles que les identifiants de base de données, les mots de passe et les clés API tierces. 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 ?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) dans le *guide de AWS Secrets Manager l'utilisateur*.

Pour utiliser des secrets complets ou des valeurs secrètes stockées dans Secrets Manager dans vos CloudFormation modèles, vous devez utiliser des références `secretsmanager` dynamiques.

## Bonnes pratiques
<a name="dynamic-references-secretsmanager-best-practices"></a>

Suivez ces bonnes pratiques lorsque vous utilisez les références dynamiques de Secrets Manager dans vos CloudFormation modèles :
+ **Utilisez des références sans version pour vos CloudFormation modèles** : stockez les informations d'identification dans Secrets Manager et utilisez des références dynamiques sans spécifier `version-stage` ni `version-id` paramètres pour prendre en charge les flux de travail de rotation secrets appropriés.
+ **Tirez parti de la rotation automatique** : utilisez la fonctionnalité de rotation automatique de Secrets Manager avec des références dynamiques sans version pour la gestion des informations d’identification. Cela garantit que vos informations d’identification sont régulièrement mises à jour sans nécessiter de modifications du modèle. Pour plus d’informations, consultez la rubrique [Rotation de secrets AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).
+ **Utilisez les références versionnées avec parcimonie** : ne spécifiez des paramètres `version-stage` ou `version-id` explicites ou que dans des cas spécifiques, tels que les tests ou les situations de restauration.

## Considérations
<a name="dynamic-references-secretsmanager-considerations"></a>

Lorsque vous utilisez des références `secretsmanager` dynamiques, il est important de garder à l’esprit les considérations suivantes :
+ CloudFormation ne permet pas de savoir quelle version d'un secret a été utilisée lors des déploiements précédents. Planifiez soigneusement votre stratégie de gestion des secrets avant de mettre en œuvre des références dynamiques. Utilisez des références sans version lorsque cela est possible afin de tirer parti de la rotation automatique du secret. Surveillez et validez les mises à jour des ressources lorsque vous apportez des modifications aux configurations de références dynamiques, par exemple lors du passage de références dynamiques non versionnées à des références dynamiques versionnées, et inversement.
+ La mise à jour de la seule valeur secrète dans Secrets Manager n' CloudFormation entraîne pas automatiquement la récupération de la nouvelle valeur. CloudFormation récupère la valeur secrète uniquement lors de la création de la ressource ou des mises à jour qui modifient la ressource contenant la référence dynamique. 

  Par exemple, supposons que votre modèle inclut une ressource [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) dont la propriété `MasterPassword` est définie sur une référence dynamique Secrets Manager. Après avoir créé une pile à partir de ce modèle, vous mettez à jour la valeur du secret dans Secrets Manager. Cependant, la propriété `MasterPassword` conserve l’ancienne valeur du mot de passe. 

  Pour appliquer la nouvelle valeur secrète, vous devez modifier la `AWS::RDS::DBInstance` ressource dans votre CloudFormation modèle et effectuer une mise à jour de la pile. 

  Pour éviter ce processus manuel à l’avenir, envisagez d’utiliser Secrets Manager pour faire tourner automatiquement le secret. 
+ Les références dynamiques pour les valeurs sécurisées, telles que`secretsmanager`, ne sont actuellement pas prises en charge dans les ressources personnalisées.
+ 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.

## Permissions
<a name="dynamic-references-secretsmanager-permissions"></a>

Pour spécifier un secret stocké dans Secrets Manager, vous devez disposer des autorisations nécessaires pour appeler le [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) du secret.

## Modèle de référence
<a name="dynamic-references-secretsmanager-pattern"></a>

Pour référencer les secrets de Secrets Manager dans votre CloudFormation modèle, utilisez le modèle `secretsmanager` de référence 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 qui se trouve dans votre Compte AWS répertoire, il vous suffit de spécifier le nom du secret. Pour accéder à un secret dans un autre Compte AWS format, spécifiez l'ARN complet du secret.  
Obligatoire.

`secret-string`  
La seule valeur prise en charge est `SecretString`. La valeur 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 de`json-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
<a name="dynamic-references-secretsmanager-examples"></a>

**Topics**
+ [Récupération des valeurs de nom d’utilisateur et de mot de passe à partir d’un secret](#dynamic-references-secretsmanager-examples-user-name-and-password)
+ [Récupération de l’intégralité de SecretString](#dynamic-references-secretsmanager-examples-entire-secretstring)
+ [Extraction d’une valeur d’une version spécifique d’un secret](#dynamic-references-secretsmanager-examples-specific-version)
+ [Récupérer les secrets d'un autre Compte AWS](#dynamic-references-secretsmanager-examples-secrets-from-another-account)

### Récupération des valeurs de nom d’utilisateur et de mot de passe à partir d’un secret
<a name="dynamic-references-secretsmanager-examples-user-name-and-password"></a>

Le [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) suivant récupère les valeurs du nom d’utilisateur et du mot de passe stockées dans le secret `MySecret`. Cet exemple montre le modèle recommandé pour les références dynamiques sans version, qui utilise automatiquement la version `AWSCURRENT` et prend en charge les workflows de rotation Secrets Manager sans nécessiter de modifications du modèle.

#### JSON
<a name="dynamic-references-secretsmanager-examples-user-name-and-password.json"></a>

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

#### YAML
<a name="dynamic-references-secretsmanager-examples-user-name-and-password.yaml"></a>

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

### Récupération de l’intégralité de SecretString
<a name="dynamic-references-secretsmanager-examples-entire-secretstring"></a>

La référence dynamique suivante permet de récupérer le `SecretString` pour `MySecret`.

```
{{resolve:secretsmanager:MySecret}}
```

Autrement :

```
{{resolve:secretsmanager:MySecret::::}}
```

### Extraction d’une valeur d’une version spécifique d’un secret
<a name="dynamic-references-secretsmanager-examples-specific-version"></a>

La référence dynamique suivante récupère la valeur `password` de la version `AWSPREVIOUS` de `MySecret`.

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

### Récupérer les secrets d'un autre Compte AWS
<a name="dynamic-references-secretsmanager-examples-secrets-from-another-account"></a>

La référence dynamique suivante récupère le `SecretString` pour `MySecret` qui se trouve dans un autre Compte AWS. Vous devez spécifier l'ARN secret complet pour accéder aux secrets d'un autre Compte AWS.

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

La référence dynamique suivante récupère la valeur `password` pour `MySecret` qui se trouve dans un autre Compte AWS. Vous devez spécifier l'ARN secret complet pour accéder aux secrets d'un autre Compte AWS.

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