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.
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 est placée dans une pile imbriquée dans le modèle traité. Il utilise un modèle de fonction issu du référentiel AWS Secrets Manager
Rotation Lambda Functions
Utilisation
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 AWS::SecretsManager
transformation 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 fonctionnalités dans AWS::SecretsManager-2024-09-16
La dernière version de AWS::SecretsManager
transform (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 que vous utilisez les versions les plus sûres et les plus fiables du code qui gère la rotation des secrets dans Secrets Manager.
-
Support d'attributs supplémentaires — La nouvelle transformation prend en charge des attributs de ressource supplémentaires pour le type de
AWS::SecretsManager::RotationSchedule
ressource lorsqu'il est utilisé avec laHostedRotationLambda
propriété, y compris l'DependsOn
attribut.Note
Les deux versions prennent en charge les
UpdateReplacePolicy
attributsDeletionPolicy
et.
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
Exemples
L'exemple de modèle partiel suivant montre comment utiliser la AWS::SecretsManager
transformation (AWS::SecretsManager-2024-09-16
) et la AWS::SecretsManager::RotationScheduleressource de 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 tourner automatiquement tous les jours à 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
Ressources connexes
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 des considérations générales relatives à l'utilisation des macros, consultezConsidérations.