Por que atualizar um segredo no Secrets Manager não atualiza automaticamente o segredo no AWS CloudFormation?

Última atualização: 26/04/2022

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.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?