Por que atualizar um segredo no Secrets Manager não atualiza automaticamente o segredo no AWS CloudFormation?
Atualizei meu segredo no AWS Secrets Manager, mas a referência dinâmica não foi atualizada durante a atualização da pilha do AWS CloudFormation.
Breve descrição
Quando você atualiza um segredo no Secrets Manager, o CloudFormation não detecta automaticamente que o valor do segredo foi alterado. Durante as atualizações da pilha, o CloudFormation não recupera o valor da referência dinâmica, a menos que seja feita uma alteração na própria referência dinâmica.
Depois de atualizar o segredo no Secrets Manager, você deve atualizar a pilha do CloudFormation e também especificar o VersionId na string de referência dinâmica. Especificar o VersionId é uma prática recomendada para garantir que o CloudFormation recupere a versão atualizada do segredo.
Resolução
Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar usando a versão mais recente da AWS CLI.
O cenário de exemplo a seguir demonstra como atualizar sua referência dinâmica do Secrets Manager no CloudFormation.
1. Faça i,a referência dinâmica ao segredo do Secrets Manager em seu modelo do CloudFormation.
Por exemplo, o seguinte modelo do CloudFormation faz referência dinâmica a um segredo do Secrets Manager com o secret-id mysecret e a secret-string {"MyKey\”:"MyValue"}:
Resources: SG: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: '{{resolve:secretsmanager:mysecret:SecretString:MyKey}}' SecurityGroupIngress: - IpProtocol: tcp FromPort: 8080 ToPort: 8080 CidrIp: 0.0.0.0/0
Observação: a referência dinâmica anterior resolve para MyValue para a propriedade GroupDescription.
2. Atualize o segredo no Secrets Manager executando o comando update-secret por meio da AWS Command Line Interface (AWS CLI) e especifique a string secreta. Para o cenário de exemplo, a string secreta é {"MyKey\”:"NewValue"}.
Observação: o VersionId não aparece no Console de Gerenciamento da AWS. Se você atualizou o segredo por meio do Console de Gerenciamento da AWS, execute o comando get-secret-value por meio da AWS CLI para recuperar o VersionId.
3. Observe o VersionId da saída.
Exemplo de saída:
$ aws secretsmanager update-secret --secret-id mysecret --secret-string {\"MyKey\":\"NewValue\"} { "ARN": "arn:aws:secretsmanager:us-east-1:xxxxxxxxxxxx:secret:mysecret-ABCDeF", "Name": "mysecret", "VersionId": "ab01234c-5d67-89ef-01gh-2ijk345l6m78" }
Observação: o VersionId “ab01234c-5d67-89ef-01gh-2ijk345l6m78" da saída anterior não é aplicado automaticamente à referência dinâmica na pilha do CloudFormation.
4. Atualize a pilha e especifique o VersionId na string de referência dinâmica. Por exemplo:
Resources: SG: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: '{{resolve:secretsmanager:mysecret:SecretString:MyKey::ab01234c-5d67-89ef-01gh-2ijk345l6m78}}' SecurityGroupIngress: - IpProtocol: tcp FromPort: 8080 ToPort: 8080 CidrIp: 0.0.0.0/0
Observação: no modelo do exemplo anterior, o :: antes do VersionId “ab01234c-5d67-89ef-01gh-2ijk345l6m78" é a sintaxe correta. Esta seção da string de referência dinâmica é deixada em branco porque version-stage não precisa ser especificado.
Conteúdo relevante
- AWS OFICIALAtualizada há 2 meses
- AWS OFICIALAtualizada há 2 meses
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano