Warum wird bei der Aktualisierung eines Geheimnisses in Secrets Manager das Geheimnis in AWS CloudFormation nicht automatisch aktualisiert?

Lesedauer: 2 Minute
0

Ich habe mein Geheimnis in AWS Secrets Manager aktualisiert, aber die dynamische Referenz wurde bei der Aktualisierung meines AWS-CloudFormation-Stacks nicht aktualisiert.

Kurzbeschreibung

Wenn Sie ein Geheimnis in Secrets Manager aktualisieren, erkennt CloudFormation nicht automatisch, dass sich der Wert des Geheimnisses geändert hat. Bei Stack-Aktualisierungen ruft CloudFormation den Wert der dynamischen Referenz nur dann ab, wenn eine Änderung an der dynamischen Referenz selbst vorgenommen wird.

Nach der Aktualisierung des Geheimnisses in Secrets Manager müssen Sie den CloudFormation-Stack aktualisieren und auch die VersionId in der Zeichenfolge der dynamischen Referenz angeben. Die Angabe der VersionId ist eine bewährte Methode, um sicherzustellen, dass CloudFormation die aktualisierte Version des Geheimnisses abruft.

Lösung

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die aktuelle Version der AWS CLI verwenden.

Das folgende Beispielszenario veranschaulicht, wie Sie Ihre dynamische Secrets-Manager-Referenz in CloudFormation aktualisieren.

1.    Verweisen Sie in Ihrer CloudFormation-Vorlage dynamisch auf das Secrets-Manager-Geheimnis.

Die folgende CloudFormation-Vorlage verweist beispielsweise dynamisch auf ein Secrets Manager-Geheimnis mit secret-id mysecret und 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

Hinweis: Die obige dynamische Referenz wird für die Eigenschaft GroupDescription in MyValue aufgelöst.

2.    Aktualisieren Sie das Geheimnis in Secrets Manager, indem Sie den Befehl update-secret über die AWS Command Line Interface (AWS CLI) ausführen und secret-string angeben. Für das Beispielszenario lautet der Wert von secret-string {"MyKey":"NewValue"}.

Hinweis: Die VersionId wird nicht in der AWS-Managementkonsole angezeigt. Wenn Sie das Geheimnis über die AWS-Managementkonsole aktualisiert haben, führen Sie dann den Befehl get-secret-value über die AWS CLI aus, um die VersionId abzurufen.

3.    Notieren Sie sich die VersionId aus der Ausgabe.

Beispielausgabe:

$ 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"
}

Hinweis: Die VersionId „ab01234c-5d67-89ef-01gh-2ijk345l6m78“ aus der obigen Ausgabe wird nicht automatisch auf die dynamische Referenz im CloudFormation-Stack angewendet.

4.    Aktualisieren Sie den Stack und geben Sie die VersionId in der Zeichenfolge der dynamischen Referenz an. Beispiel:

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

Hinweis: In der obigen Beispielvorlage ist das :: vor der VersionId „ab01234c-5d67-89ef-01gh-2ijk345l6m78“ die korrekte Syntax. Dieser Abschnitt der Zeichenfolge der dynamischen Referenz wird leer gelassen, da version-stage nicht angegeben werden muss.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren