Transformation AWS::SecretsManager - 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.

Transformation AWS::SecretsManager

Cette rubrique décrit comment utiliser la AWS::SecretsManager transformation et le type de AWS::SecretsManager::RotationScheduleressource pour spécifier une fonction Lambda afin d'effectuer une rotation des secrets.

La AWS::SecretsManager transformation est une CloudFormation macro qui, lorsqu'elle est référencée dans votre modèle de pile, génère automatiquement une fonction Lambda pour la rotation des secrets lorsque vous créez ou mettez à jour une pile à l'aide d'un ensemble de modifications. La fonction Lambda générée est placée dans une pile imbriquée du modèle transformé. Il utilise un modèle de fonction issu du référentiel AWS Secrets Manager Rotation Lambda Functions, basé sur la valeur de la RotationTypepropriété de la AWS::SecretsManager::RotationScheduleressource.

Usage

Pour utiliser la AWS::SecretsManager transformation, vous devez la déclarer au niveau supérieur de votre CloudFormation modèle. 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 CloudFormation modèle, 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. Vous configurez plutôt la HostedRotationLambdapropriété de la AWS::SecretsManager::RotationScheduleressource dans votre modèle de pile. La HostedRotationLambdapropriété spécifie la fonction Lambda pour effectuer 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 CloudFormation piles, 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 AWS::SecretsManager transformation, voir Présentation d'une version améliorée de la AWS Secrets Manager transformation : AWS::SecretsManager-2024-09-16 sur le blog AWS de sécurité.

Exemples

Les exemples suivants montrent comment utiliser la AWS::SecretsManager transformation (AWS::SecretsManager-2024-09-16) et la AWS::SecretsManager::RotationScheduleressource dans votre modèle. 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 de CloudFormation modèles complets que vous pouvez utiliser pour configurer des rotations secrètes, consultez la section Exemples de la AWS::SecretsManager::RotationSchedule ressource.

Pour obtenir des informations générales sur l'utilisation des macros, voir Effectuer un traitement personnalisé sur des CloudFormation modèles à l'aide de modèles de macros dans le Guide de AWS CloudFormation l'utilisateur.