Transformación AWS::SecretsManager - AWS CloudFormation

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, basada en el valor de la propiedad RotationType del recurso AWS::SecretsManager::RotationSchedule.

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 propiedad HostedRotationLambda, incluido el atributo DependsOn.

    nota

    Ambas versiones admiten los atributos DeletionPolicy y UpdateReplacePolicy.

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 en AWS Security Blog.

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: !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

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.