Transformação AWS::SecretsManager
Este tópico descreve como usar a transformação AWS::SecretsManager
e o tipo de recurso AWS::SecretsManager::RotationSchedule para especificar uma função do Lambda para executar a alternância de segredos.
A transformação AWS::SecretsManager
é uma macro do CloudFormation que, quando referenciada em seu modelo de pilha, gera automaticamente uma função do Lambda para alternância de segredos quando você cria ou atualiza uma pilha usando um conjunto de alterações. A função do Lambda é colocada em uma pilha aninhada no modelo processado. Ela usa um modelo de função do repositório Funções do Lambda de alternância do AWS Secrets Manager
Uso
Para usar a transformação AWS::SecretsManager
, é necessário declará-la no nível superior do seu modelo do CloudFormation. Não é possível usar AWS::SecretsManager
como uma transformação incorporada em nenhuma outra seção de modelo.
A declaração deve usar a string literal AWS::SecretsManager-2020-07-23
ou AWS::SecretsManager-2024-09-16
como seu valor. Você não pode usar um parâmetro ou uma função para especificar um valor de transformação.
Sintaxe
Para declarar essa transformação no modelo do CloudFormation, use a seguinte sintaxe:
JSON
{ "Transform":"AWS::SecretsManager-
2020-07-23
", "Resources":{...
} }
YAML
Transform: AWS::SecretsManager-
2020-07-23
Resources:...
A transformação AWS::SecretsManager
é uma declaração independente sem parâmetros adicionais. Em vez disso, você configura a propriedade HostedRotationLambda do recurso AWS::SecretsManager::RotationSchedule em seu modelo de pilha. A propriedade HostedRotationLambda especifica a função do Lambda para executar a rotação de segredos.
Novos recursos no AWS::SecretsManager-2024-09-16
A versão mais recente da transformação AWS::SecretsManager
(AWS::SecretsManager-2024-09-16
) apresenta os seguintes aperfeiçoamentos:
-
Atualizações automáticas do Lambda: quando você atualiza suas pilhas do CloudFormation, suas funções do Lambda agora atualizam automaticamente suas configurações de runtime e dependências internas. Isso garante que você esteja usando as versões mais seguras e confiáveis do código que gerencia a alternância de segredos no Secrets Manager.
-
Suporte a atributos adicionais: a nova transformação oferece suporte a atributos de recursos adicionais para o tipo de recurso
AWS::SecretsManager::RotationSchedule
quando usada com a propriedadeHostedRotationLambda
, incluindo o atributoDependsOn
.nota
Ambas as versões oferecem suporte aos atributos
DeletionPolicy
eUpdateReplacePolicy
.
Para saber mais sobre essa nova versão da transformação AWS::SecretsManager
, consulte Introdução a uma versão aprimorada da transformação AWS Secrets Manager: AWS::SecretsManager-2024-09-16
Exemplos
O exemplo de modelo parcial a seguir mostra como usar a transformação AWS::SecretsManager
(AWS::SecretsManager-2024-09-16
) e o recurso AWS::SecretsManager::RotationSchedule em seu modelo. Neste exemplo, o CloudFormation gerará automaticamente uma função do Lambda para a alternância de segredos de usuário único do MySQL.
O segredo está configurado para alternar automaticamente todos os dias à meia-noite (UTC). O processo de alternância pode levar até 2 horas para ser concluído. A atualização do cronograma de alternância não iniciará uma alternância imediata.
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 exemplos completos de modelos do CloudFormation que você pode usar para configurar alternâncias de segredos, consulte a seção Exemplos do recurso AWS::SecretsManager::RotationSchedule
.
Para ver considerações gerais sobre o uso de macros, consulte Considerações.