Warum wird bei der Aktualisierung eines Geheimnisses in Secrets Manager das Geheimnis in AWS CloudFormation nicht automatisch aktualisiert?
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.
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor 2 Jahren