AWS::SecretsManagerTransformation - AWS CloudFormation

Il s’agit du nouveau Guide de référence des modèles CloudFormation. Veuillez mettre à jour vos favoris et vos liens. Pour obtenir de l'aide pour démarrer CloudFormation, consultez le guide de AWS CloudFormation l'utilisateur.

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.

AWS::SecretsManagerTransformation

Cette rubrique décrit comment utiliser la transformation AWS::SecretsManager et le type de ressource AWS::SecretsManager::RotationSchedule pour spécifier une fonction Lambda chargée d’assurer la rotation des secrets.

La transformation AWS::SecretsManager est une macro CloudFormation qui, lorsqu’elle est référencée dans votre modèle de pile, génère automatiquement une fonction Lambda chargée d’assurer la rotation des secrets lors de la création ou de la mise à jour d’une pile via un jeu de modifications. La fonction Lambda générée est placée dans une pile imbriquée du modèle transformé. Elle utilise un modèle de fonction provenant du référentiel Rotation des fonctions Lambda AWS Secrets Manager, selon la valeur de la propriété RotationType de la ressource AWS::SecretsManager::RotationSchedule.

Utilisation

Pour utiliser la transformation AWS::SecretsManager, vous devez la déclarer au niveau supérieur de votre modèle CloudFormation. Vous ne pouvez pas utiliser AWS::SecretsManager comme transformation incorporée dans une autre section de modèle.

La déclaration doit utiliser la chaîne littérale AWS::SecretsManager-2020-07-23 ou AWS::SecretsManager-2024-09-16 comme valeur. Vous ne pouvez pas utiliser de paramètre ou de fonction pour spécifier la valeur de transformation.

Syntaxe

Pour déclarer cette transformation dans votre modèle CloudFormation, utilisez la syntaxe suivante :

JSON

{ "Transform":"AWS::SecretsManager-2020-07-23", "Resources":{ ... } }

YAML

Transform: AWS::SecretsManager-2020-07-23 Resources: ...

La transformation AWS::SecretsManager est une déclaration autonome sans paramètres supplémentaires. À la place, vous configurez la propriété HostedRotationLambda de la ressource AWS::SecretsManager::RotationSchedule dans votre modèle de pile. La propriété HostedRotationLambda spécifie la fonction Lambda qui exécutera la rotation des secrets.

Nouvelles caractéristiques de AWS::SecretsManager-2024-09-16

La dernière version de la transformation AWS::SecretsManager (AWS::SecretsManager-2024-09-16) introduit les améliorations suivantes :

  • Mises à niveau Lambda automatiques : lorsque vous mettez à jour vos piles CloudFormation, vos fonctions Lambda mettent désormais automatiquement à jour leur configuration d’exécution et leurs dépendances internes. Cela garantit l’utilisation des versions les plus fiables et sécurisées du code assurant la rotation des secrets dans Secrets Manager.

  • Prise en charge d’attributs supplémentaires : la nouvelle transformation prend en charge des attributs supplémentaires pour le type de ressource AWS::SecretsManager::RotationSchedule lorsqu’il est utilisé avec la propriété HostedRotationLambda, incluant l’attribut DependsOn.

    Note

    Les deux versions prennent en charge les attributs DeletionPolicy et UpdateReplacePolicy.

Pour en savoir plus sur cette nouvelle version de la transformation AWS::SecretsManager, consultez Présentation d’une version améliorée de la transformation AWS Secrets Manager : AWS::SecretsManager-2024-09-16 sur le blog de sécurité AWS.

Exemples

Les exemples suivants illustrent l’utilisation de la transformation AWS::SecretsManager (AWS::SecretsManager-2024-09-16) avec la ressource AWS::SecretsManager::RotationSchedule dans un modèle CloudFormation. Dans cet exemple, CloudFormation générera automatiquement une fonction Lambda pour la rotation du secret utilisateur unique de MySQL.

Le secret est configuré pour être automatiquement renouvelé chaque jour à minuit (UTC). Le processus de rotation peut prendre jusqu’à 2 heures. La mise à jour du calendrier de rotation ne déclenchera pas une rotation immédiate.

JSON

{ "AWSTemplateFormatVersion":"2010-09-09", "Transform":"AWS::SecretsManager-2024-09-16", "Resources":{ ... "MySecretRotationSchedule":{ "Type":"AWS::SecretsManager::RotationSchedule", "DependsOn":"logical name of AWS::SecretsManager::SecretTargetAttachment resource", "Properties":{ "SecretId":{ "Ref":"logical name of AWS::SecretsManager::Secret resource" }, "HostedRotationLambda":{ "RotationType":"MySQLSingleUser", "RotationLambdaName":"name of Lambda function to be created", "VpcSecurityGroupIds":{ "Fn::GetAtt":[ "logical name of AWS::EC2::SecurityGroup resource", "GroupId" ] }, "VpcSubnetIds":{ "Fn::Join":[ ",", [ { "Ref":"logical name of primary subnet" }, { "Ref":"logical name of secondary subnet" } ] ] } }, "RotationRules":{ "ScheduleExpression":"cron(0 0 * * ? *)", "Duration":"2h" }, "RotateImmediatelyOnUpdate":false } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::SecretsManager-2024-09-16 Resources: ... MySecretRotationSchedule: Type: AWS::SecretsManager::RotationSchedule DependsOn: logical name of AWS::SecretsManager::SecretTargetAttachment resource Properties: SecretId: !Ref logical name of AWS::SecretsManager::Secret resource HostedRotationLambda: RotationType: MySQLSingleUser RotationLambdaName: name of Lambda function to be created VpcSecurityGroupIds: !GetAtt logical name of AWS::EC2::SecurityGroup resource.GroupId VpcSubnetIds: Fn::Join: - "," - - Ref: logical name of primary subnet - Ref: logical name of secondary subnet RotationRules: ScheduleExpression: cron(0 0 * * ? *) Duration: 2h RotateImmediatelyOnUpdate: false

Pour des exemples complets de modèles CloudFormation permettant de configurer la rotation de secrets, consultez la section Examples de la ressource AWS::SecretsManager::RotationSchedule.

Pour plus d’informations, consultez Traitement personnalisé des modèles CloudFormation à l’aide de macros de modèle dans le Guide de l’utilisateur AWS CloudFormation.