Transformación AWS::SecretsManager
En este tema se describe cómo utilizar la transformación AWS::SecretsManager
y el tipo de recurso AWS::SecretsManager::RotationSchedule para especificar una función de Lambda para realizar la rotación de secretos.
La transformación AWS::SecretsManager
es una macro de CloudFormation que, cuando se hace referencia a ella en la plantilla de la pila, genera automáticamente una función de Lambda para la rotación de secretos al crear o actualizar una pila mediante un conjunto de cambios. La función de Lambda se coloca en una pila anidada en la plantilla procesada. Utiliza una plantilla de funciones del repositorio AWS Secrets Manager Rotation Lambda Functions
Uso
Para usar la transformación AWS::SecretsManager
, debe declararla en el nivel superior de la plantilla de CloudFormation. No se puede utilizar AWS::SecretsManager
como transformación integrada en ninguna otra sección de la plantilla.
La declaración debe usar la cadena literal AWS::SecretsManager-2020-07-23
o AWS::SecretsManager-2024-09-16
como valor. No puede utilizar un parámetro o función para especificar un valor de transformación.
Sintaxis
Para declarar esta transformación en su plantilla de CloudFormation, use la siguiente sintaxis:
JSON
{ "Transform":"AWS::SecretsManager-
2020-07-23
", "Resources":{...
} }
YAML
Transform: AWS::SecretsManager-
2020-07-23
Resources:...
La transformación AWS::SecretsManager
es una declaración independiente sin parámetros adicionales. En su lugar, debe configurar la propiedad HostedRotationLambda del recurso AWS::SecretsManager::RotationSchedule en la plantilla de la pila. La propiedad HostedRotationLambda especifica la función de Lambda para realizar la rotación de secretos.
Nuevas características de AWS::SecretsManager-2024-09-16
La última versión de la transformación AWS::SecretsManager
(AWS::SecretsManager-2024-09-16
) presenta las siguientes mejoras:
-
Actualizaciones de Lambda automáticas: al actualizar las pilas de CloudFormation, las funciones de Lambda ahora actualizan automáticamente su configuración de tiempo de ejecución y sus dependencias internas. Esto garantiza que utilice las versiones más seguras y fiables del código que administra la rotación de secretos en Secrets Manager.
-
Compatibilidad con atributos adicionales: la nueva transformación admite atributos de recurso adicionales para el tipo de recurso
AWS::SecretsManager::RotationSchedule
cuando se usa con la propiedadHostedRotationLambda
, incluido el atributoDependsOn
.nota
Ambas versiones admiten los atributos
DeletionPolicy
yUpdateReplacePolicy
.
Para obtener más información sobre esta nueva versión de la transformación AWS::SecretsManager
, consulte Introducing an enhanced version of theAWS Secrets Manager transform: AWS::SecretsManager-2024-09-16
Ejemplos
En el siguiente ejemplo de plantilla parcial se muestra cómo usar la transformación AWS::SecretsManager
(AWS::SecretsManager-2024-09-16
) y el recurso AWS::SecretsManager::RotationSchedule en la plantilla. En este ejemplo, CloudFormation generará automáticamente una función de Lambda para la rotación de secretos de un solo usuario de MySQL.
El secreto está configurado para rotar automáticamente todos los días a medianoche (UTC). El proceso de rotación puede tardar hasta dos horas en completarse. La actualización del programa de rotación no iniciará una rotación inmediata.
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: !Reflogical name of AWS::SecretsManager::Secret resource
HostedRotationLambda: RotationType: MySQLSingleUser RotationLambdaName:name of Lambda function to be created
VpcSecurityGroupIds: !GetAttlogical 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
Recursos relacionados
Para ver ejemplos completos de plantillas de CloudFormation que puede usar para configurar rotaciones secretas, consulte la sección Ejemplos del recurso AWS::SecretsManager::RotationSchedule
.
Consulte las consideraciones generales acerca de cómo usar macros en Consideraciones.