Verwenden von dynamischen Referenzen zum Angeben von Vorlagenwerten - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von dynamischen Referenzen zum Angeben von Vorlagenwerten

Dynamische Verweise bieten eine kompakte und leistungsstarke Möglichkeit, externe Werte anzugeben, die in anderen Diensten gespeichert und verwaltet werden, z. B. im Systems Manager Manager-Parameterspeicher und AWS Secrets Manager in Ihren Stack-Vorlagen. Wenn Sie eine dynamische Referenz verwenden, CloudFormation ruft sie den Wert der angegebenen Referenz ab, falls dies bei Stack- und Change-Set-Vorgängen erforderlich ist.

CloudFormation unterstützt derzeit die folgenden dynamischen Referenzmuster:

  • ssm, für Klartextwerte, die im AWS Systems Manager Parameter Store gespeichert sind.

  • ssm-secure, für sichere Zeichenfolgen, die im AWS Systems Manager -Parameterspeicher gespeichert sind.

  • secretsmanager, für ganze Geheimnisse oder geheime Werte, die in AWS Secrets Manager gespeichert sind.

Einige Hinweise zur Verwendung dynamischer Referenzen

Im Folgenden finden Sie Hinweise, die Sie bei der Verwendung dynamischer Referenzen berücksichtigen sollten:

Wichtig

Wir empfehlen dringend, keine dynamischen Verweise oder vertrauliche Daten in Ressourceneigenschaften aufzunehmen, die Teil der primären ID einer Ressource sind.

Wenn ein dynamischer Referenzparameter in einer Eigenschaft enthalten ist, die eine primäre Ressourcenkennung bildet, CloudFormation kann der tatsächliche Klartextwert in der primären Ressourcenkennung verwendet werden. Diese Ressourcen-ID kann in allen abgeleiteten Ausgaben oder Zielen vorkommen.

Um zu ermitteln, welche Ressourceneigenschaften die primäre Kennung eines Ressourcentyps ausmachen, lesen Sie die Referenzdokumentation für Ressourcen für diese Ressource. Im Abschnitt Return values (Rückgbewerte) stellt der Rückgabewert der Ref-Funktion die Ressourceneigenschaften dar, welche die primäre Kennung des Ressourcentyps bilden.

  • Sie können bis zu 60 dynamische Referenzen in eine Stack-Vorlage aufnehmen.

  • Bei Transformationen wie AWS::Include und werden dynamische Verweise AWS CloudFormation nicht aufgelöstAWS::Serverless, bevor Transformationen aufgerufen werden. AWS CloudFormation Übergibt stattdessen die Literalzeichenfolge der dynamischen Referenz an die Transformation. Dynamische Referenzen (auch solche, die als Ergebnis einer Transformation in die bearbeitete Vorlage eingefügt werden) werden aufgelöst, wenn Sie den Änderungssatz über die Vorlage ausführen.

  • Dynamische Referenzen für sichere Werte, z. B. ssm-secure und secretsmanager, unterstützen derzeit keine benutzerdefinierten Ressourcen.

Anmerkung

Erstellen Sie keine dynamische Referenz mit einem umgekehrten Schrägstrich (\) als Endwert. AWS CloudFormation kann diese Verweise nicht auflösen, was zu einem Ressourcenausfall führt.

Angeben dynamischer Referenzen in Stack-Vorlagen

Dynamische Referenzen unterliegen dem folgenden Muster:

'{{resolve:service-name:reference-key}}' oder '{{resolve:ssm:[a-zA-Z0-9_.\-/]+(:\d+)?}}'.

service-name

Gibt den Service an, in dem der Wert gespeichert und verwaltet wird.

Erforderlich

Derzeit sind unter anderem folgende Werte gültig:

  • ssm: Systems Manager Parameter Store – Klartextparameter

  • ssm-secure: Systems Manager Paramter Store – sicheren String-Parameter

    Anmerkung

    Derzeit werden SecureString Parameter von Systems Manager in den cn-northwest-1 Regionen cn-north-1 und nicht unterstützt.

    Weitere Informationen finden Sie unter AWS Systems Manager -Parameterspeicher im Benutzerhandbuch für AWS Systems Manager .

  • secretsmanager: Secrets-Manager-Geheimnis.

reference-key

Der Referenzschlüssel. Je nach Art der dynamischen Referenz kann der Referenzschlüssel aus mehreren Segmenten bestehen.

Erforderlich

SSM-Parameter

Verwenden Sie die dynamische ssm-Referenz, um Werte vom Typ String oder StringList aus dem Systems Manager Parameter Store in Ihre Vorlagen aufzunehmen.

Referenzmuster

Bei SSM-Parametern besteht das reference-key-Segment aus dem Parameternamen und der Versionsnummer. Verwenden Sie das folgende Muster:

'{{resolve:ssm:parameter-name:version}}'

Ihre Referenz muss sich an das folgende reguläre Ausdrucksmuster für Parametername und Version halten:

'{{resolve:ssm:[a-zA-Z0-9_.-/]+:\\d+}}'

parameter-name

Der Name des Parameters im Systems Manager Parameter Store. Der Parametername unterscheidet Groß- und Kleinschreibung.

Erforderlich

Version

Eine ganze Zahl, die die Version des zu verwendenden Parameters angibt. Wenn Sie nicht die genaue Version angeben, CloudFormation verwendet bei jeder Erstellung oder Aktualisierung des Stacks immer die neueste Version des Parameters. Weitere Informationen finden Sie unter Arbeiten mit Parameter-Versionen im AWS Systems Manager -Benutzerhandbuch.

Optional.

Beispiel

Das folgende Beispiel verwendet eine dynamische ssm-Referenz, um die Zugriffssteuerung für einen S3-Bucket auf einen im Systems Manager Parameter Store gespeicherten Parameterwert festzulegen. Wie angegeben, CloudFormation wird Version 2 des S3AccessControl Parameters für Stack- und Change-Set-Operationen verwendet.

JSON

"MyS3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "{{resolve:ssm:S3AccessControl:2}}" } }

YAML

MyS3Bucket: Type: 'AWS::S3::Bucket' Properties: AccessControl: '{{resolve:ssm:S3AccessControl:2}}'

Um einen im Systems Manager-Parameter Store gespeicherten Parameter anzugeben, müssen Sie über den Zugriff verfügen, um GetParameters für den angegebenen Parameter aufzurufen. Weitere Informationen finden Sie unter Steuerung des Zugriffs auf die Systems-Manager-Parameter im Benutzerhandbuch für AWS Systems Manager .

Zusätzliche Überlegungen, die bei der Verwendung des dynamischen ssm-Referenzmusters zu beachten sind:

  • Unterstützt derzeit CloudFormation keinen kontoübergreifenden SSM-Parameterzugriff.

  • CloudFormation Löst bei benutzerdefinierten Ressourcen ssm dynamische Verweise auf, bevor die Anfrage an die benutzerdefinierte Ressource gesendet wird. Weitere Informationen finden Sie unter Benutzerdefinierte Ressourcen.

  • CloudFormation unterstützt nicht die Verwendung von Parameterbeschriftungen oder öffentlichen Parametern in dynamischen Verweisen.

    Eine Parameter-Bezeichnung ist ein benutzerdefinierter Alias, mit dem Sie verschiedene Versionen eines Parameters verwalten können. Weitere Informationen finden Sie unter Parameter kennzeichnen im Benutzerhandbuch für AWS Systems Manager .

    Ein öffentlicher Parameter ist ein Parameter, der von einem AWS Dienst zur Verwendung mit diesem Dienst bereitgestellt und im AWS Systems Manager Parameter Store gespeichert wird. Ein Beispiel für öffentliche Parameter finden Sie unter Abrufen der Amazon ECS-optimierten AMI-Metadaten im Amazon Elastic Container Service Developer Guide.

  • CloudFormation unterstützt derzeit keine Drifterkennung bei dynamischen Referenzen. Bei dynamischen ssm-Referenzen, bei denen Sie die Parameterversion nicht angegeben haben, empfehlen wir, dass Sie beim Aktualisieren der Parameter-Version in SSM auch einen Stack-Aktualisierungsvorgang für alle Stacks ausführen, die die dynamische ssm-Referenz enthalten, um die neueste Parameter-Version abzurufen.

  • Um zu überprüfen, welche Version einer dynamischen ssm-Referenz in einem Stack-Vorgang verwendet wird, erstellen Sie einen Änderungssatz für den Stack-Vorgang. Überprüfen Sie dann die verarbeitete Vorlage auf der Registerkarte Vorlage.

  • SSM-Parameter ohne Version werden nicht im Parameter-Block unterstützt, verwenden Sie stattdessen SSM-Parametertypen. Wenn Sie SSM-Parameter verwenden, müssen Sie eine Version des Systems Manager Manager-Parameters angeben, die verwendet werden AWS CloudFormation soll.

SSM-Sicherer String-Parameter

Verwenden Sie das ssm-secure dynamische Referenzmuster, um AWS Systems Manager SecureString Typparameter in Ihren Vorlagen anzugeben. Speichert bei ssm-secure dynamischen Referenzen AWS CloudFormation niemals den tatsächlichen Parameterwert. AWS CloudFormation greift bei Erstellungs- und Aktualisierungsvorgängen für Stapel und Änderungssätze auf den Parameterwert zu. Derzeit können sicheren String-Parameter nur für Ressourceneigenschaften verwendet werden, die das dynamische ssm-secure-Referenzmuster unterstützen.

sicheren String-Parameter sind alle sensiblen Daten, die sicher gespeichert und referenziert werden müssen. Das heißt, Daten, die Benutzer nicht im Klartext ändern oder referenzieren sollen, wie z. B. Passwörter oder Lizenzschlüssel. Weitere Informationen zu sicheren Zeichenfolgen finden Sie unter Verwenden von sicheren Zeichenfolgen-Parametern im Benutzerhandbuch für AWS Systems Manager .

Werte für sichere Zeichenkettenparameter werden weder in CloudFormation API-Aufrufergebnissen gespeichert noch in API-Aufrufergebnissen zurückgegeben.

Referenzmuster

Bei dynamischen ssm-secure-Referenzen besteht das Segment reference-key aus dem Parameternamen und der Versionsnummer. Verwenden Sie das folgende Muster:

'{{resolve:ssm-secure:parameter-name:version}}'

Ihre Referenz muss sich an das folgende reguläre Ausdrucksmuster für Parametername und Version halten:

'{{resolve:ssm-secure:[a-zA-Z0-9_.-/]+:\\d+}}'

parameter-name

Der Name des Parameters im Systems Manager Parameter Store. Der Parametername unterscheidet Groß- und Kleinschreibung.

Erforderlich

Version

Eine ganze Zahl, die die Version des zu verwendenden Parameters angibt. Wenn Sie nicht die genaue Version angeben, AWS CloudFormation verwendet immer die neueste Version des Parameters, wenn Sie den Stack erstellen oder aktualisieren. Weitere Informationen finden Sie unter Arbeiten mit Parameter-Versionen im AWS Systems Manager -Benutzerhandbuch.

Optional.

Beispiel

Das folgende Beispiel verwendet eine dynamische ssm-secure-Referenz, um das Passwort für einen IAM-Benutzer auf eine sichere Zeichenfolge festzulegen, die im Systems Manager Parameter Store gespeichert ist. Wie angegeben, CloudFormation wird Version 10 des IAMUserPassword Parameters für Stack- und Change-Set-Operationen verwendet.

JSON

"MyIAMUser": { "Type": "AWS::IAM::User", "Properties": { "UserName": "MyUserName", "LoginProfile": { "Password": "{{resolve:ssm-secure:IAMUserPassword:10}}" } } }

YAML

MyIAMUser: Type: AWS::IAM::User Properties: UserName: 'MyUserName' LoginProfile: Password: '{{resolve:ssm-secure:IAMUserPassword:10}}'

Zusätzliche Überlegungen, die bei der Verwendung des dynamischen ssm-secure-Referenzmusters zu beachten sind:

  • CloudFormation gibt in API-Aufrufen nicht den tatsächlichen Parameterwert für sichere Zeichenketten zurück, sondern gibt die wörtliche dynamische Referenz zurück.

  • CloudFormation speichert den literalen dynamischen Verweis, der den Klartext-Parameternamen der sicheren Zeichenfolge enthält.

  • CloudFormation Vergleicht bei Änderungssätzen die literale dynamische Referenzzeichenfolge. Die tatsächlichen Werte der ssm-secure-Referenzen werden nicht aufgelöst und verglichen.

  • Dynamische Referenzen für sichere Werte, z. B. ssm-secure und secretsmanager, unterstützen derzeit keine benutzerdefinierten Ressourcen.

  • In Fällen, in denen ein Stack-Update rückgängig gemacht werden CloudFormation muss, schlägt dieser Aktualisierungs-Rollback-Vorgang fehl, wenn die zuvor angegebene Version eines sicheren Zeichenkettenparameters nicht mehr verfügbar ist. Führen Sie in solchen Fällen einen der folgenden Schritte aus:

    • Verwenden Sie CONTINUE_UPDATE_ROLLBACK, um die Ressource zu überspringen.

    • Erstellen Sie den sicheren String-Parameter im Systems Manager Parameter Store neu und aktualisieren Sie ihn, bis die Parameterversion die in der Vorlage verwendete Version erreicht. Verwenden Sie dann CONTINUE_UPDATE_ROLLBACK, ohne die Ressource zu überspringen.

  • Unterstützt derzeit AWS CloudFormation keinen kontoübergreifenden SSM-Parameterzugriff.

  • CloudFormation unterstützt nicht die Verwendung von Parameterbeschriftungen oder öffentlichen Parametern in dynamischen Verweisen.

    Eine Parameter-Bezeichnung ist ein benutzerdefinierter Alias, mit dem Sie verschiedene Versionen eines Parameters verwalten können. Weitere Informationen finden Sie unter Parameter kennzeichnen im Benutzerhandbuch für AWS Systems Manager .

    Ein öffentlicher Parameter ist ein Parameter, der von einem AWS Dienst zur Verwendung mit diesem Dienst bereitgestellt und im AWS Systems Manager Parameter Store gespeichert wird. Ein Beispiel für öffentliche Parameter finden Sie unter Abrufen der Amazon ECS-optimierten AMI-Metadaten im Amazon Elastic Container Service Developer Guide.

Ressourcen, die dynamische Parametermuster für sichere Zeichenfolgen unterstützen

Zu den Ressourcen, die das dynamische ssm-secure-Referenzmuster unterstützen, gehören derzeit:

Secrets Manager-Secrets

Verwenden Sie die dynamische secretsmanager-Referenz, um ganze Geheimnisse oder Geheimnis-Werte, die in Secrets Manager gespeichert sind, für die Verwendung in Ihren Vorlagen abzurufen. Bei den Geheimnissen kann es sich um Datenbank-Anmeldeinformationen, Passwörter, API-Schlüssel von Drittanbietern oder beliebigen Text handeln. Mit Secrets Manager können Sie den Zugriff auf diese Geheimnisse zentral speichern und steuern, sodass Sie hartcodierte Anmeldeinformationen in Ihrem Code (einschließlich Passwörtern) durch einen API-Aufruf an Secrets Manager ersetzen können, um das Geheimnis programmgesteuert abzurufen. Weitere Informationen finden Sie unter Was ist AWS Secrets Manager? im AWS Secrets Manager Benutzerhandbuch.

Wichtige Hinweise bei der Verwendung dynamischer Referenzen für Secrets-Manager-Geheimnisse

Sie sollten die folgenden wichtigen Sicherheitshinweise berücksichtigen, wenn Sie dynamische Referenzen verwenden, um Secrets-Manager-Geheimnisse in Ihren Stack-Vorlagen anzugeben:

  • Die dynamische secretsmanager-Referenz kann in allen Ressourceneigenschaften verwendet werden. Die Verwendung der secretsmanager dynamischen Referenz bedeutet, dass weder Secrets Manager noch CloudFormation Protokolle einen aufgelösten geheimen Wert beibehalten sollten. Der Geheimnis-Wert kann jedoch in dem Service erscheinen, in dessen Ressource er verwendet wird. Überprüfen Sie Ihre Nutzung um zu vermeiden, dass Geheimnis-Daten preisgegeben werden.

  • Durch das Aktualisieren eines Secrets in Secrets Manager wird das Secret in nicht automatisch aktualisiert CloudFormation. Um eine secretsmanager dynamische Referenz CloudFormation zu aktualisieren, müssen Sie ein Stack-Update durchführen, das die Ressource aktualisiert, die die dynamische Referenz enthält, indem Sie entweder die Ressourceneigenschaft aktualisieren, die die secretsmanager dynamische Referenz enthält, oder indem Sie eine andere Eigenschaft der Ressource aktualisieren.

    Angenommen, Sie geben in Ihrer Vorlage die Eigenschaft MasterPassword einer AWS::RDS::DBInstance-Ressource an, die eine dynamische Referenz secretsmanager sein soll, und erstellen dann einen Stack aus der Vorlage. Später aktualisieren Sie den Wert dieses Geheimnisses im Secret Manager, aktualisieren jedoch nicht die Ressource AWS::RDS::DBInstance in Ihrer Vorlage. In diesem Fall wird, selbst wenn Sie eine Stack-Aktualisierung durchführen, der Secret-Wert in der Eigenschaft MasterPassword nicht aktualisiert und bleibt der vorherige Secret-Wert.

    Darüber hinaus sollten Sie den Secrets Manager verwenden, um das Secret für einen gesicherten Dienst oder eine gesicherte Datenbank automatisch zu rotieren. Weitere Informationen finden Sie unter Drehen von AWS Secrets Manager Geheimnissen.

  • Dynamische Referenzen für sichere Werte, z. B. secretsmanager, unterstützen derzeit keine benutzerdefinierten Ressourcen.

Erforderliche Berechtigungen

Um ein in Secrets Manager gespeichertes Geheimnis anzugeben, müssen Sie Zugriff auf den GetSecretValue-Aufruf für das Geheimnis haben.

Referenzmuster

Für Secrets Manager-Secrets besteht das reference-key-Segment aus mehreren Segmenten, darunter die Secret ID, der Secret Value Key, die Versionsstufe und die Versions ID. Verwenden Sie das folgende Muster:

{{resolve:secretsmanager:secret-id:secret-string:json-key:version-stage:version-id}}

secret-id

Der Name oder ARN des Secrets.

Um auf ein Geheimnis in Ihrem AWS Konto zuzugreifen, müssen Sie nur den geheimen Namen angeben. Um auf ein Geheimnis in einem anderen AWS Konto zuzugreifen, geben Sie den vollständigen ARN des Geheimnisses an.

Erforderlich

secret-string

Derzeit wird als einziger Wert unterstütz SecretString. Der Standardwert ist SecretString.

json-key

Der Schlüsselname des Schlüssel/Wert-Paares, dessen Wert Sie abrufen möchten. Wenn Sie kein a angebenjson-key, wird der gesamte geheime Text CloudFormation abgerufen.

Dieses Segment darf nicht das Doppelpunktzeichen (:) enthalten.

version-stage

Das Staging-Label der zu verwendenden Version des Geheimnisses. Secrets Manager verwendet Staging-Markierungen, um während des Rotationsprozesses den Überblick über verschiedene Versionen zu behalten. Wenn Sie version-stage verwenden, geben Sie version-id nicht an. Wenn Sie weder version-stage noch version-id angeben, dann ist der Standard die AWSCURRENT-Version.

Dieses Segment darf nicht das Doppelpunktzeichen (:) enthalten.

version-id

Die eindeutige ID der Version des zu verwendenden Secrets. Wenn Sie version-id angeben, dürfen Sie version-stage nicht angeben. Wenn Sie weder version-stage noch version-id angeben, dann ist der Standard die AWSCURRENT-Version.

Dieses Segment darf nicht das Doppelpunktzeichen (:) enthalten.

Beispiele

Das folgende Beispiel verwendet die Segmente secret-name und json-key, um die im MyRDSSecret Secret gespeicherten Werte für Benutzername und Passwort abzurufen. Standardmäßig ist die abgerufene Secret-Version die Version mit dem Versionsstufenwert AWSCURRENT.

JSON

{ "MyRDSInstance": { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName": "MyRDSInstance", "AllocatedStorage": "20", "DBInstanceClass": "db.t2.micro", "Engine": "mysql", "MasterUsername": "{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}", "MasterUserPassword": "{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}" } } }

YAML

MyRDSInstance: Type: 'AWS::RDS::DBInstance' Properties: DBName: MyRDSInstance AllocatedStorage: '20' DBInstanceClass: db.t2.micro Engine: mysql MasterUsername: '{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}' MasterUserPassword: '{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}'

Wenn Sie die folgenden Segmente angeben, wird das SecretString für MySecret abgerufen.

'{{resolve:secretsmanager:MySecret}}' oder '{{resolve:secretsmanager:MySecret::::}}'

Durch die Angabe der folgenden Segmente würde der password Wert für abgerufen MySecret.

'{{resolve:secretsmanager:MySecret:SecretString:password}}'

Durch die Angabe der folgenden Segmente würde der Wert SecretString abgerufen MySecret , der sich in einem anderen AWS Konto befindet. Sie müssen den vollständigen geheimen ARN angeben, um auf Geheimnisse in einem anderen AWS Konto zugreifen zu können.

'{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3}}'

Wenn Sie die folgenden Segmente angeben, würde der password Wert abgerufen MySecret , der sich in einem anderen AWS Konto befindet. Sie müssen den vollständigen geheimen ARN angeben, um auf Geheimnisse in einem anderen AWS Konto zugreifen zu können.

'{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3:SecretString:password}}'

Wenn Sie die folgenden Segmente angeben, würde der password Wert für die AWSPREVIOUS Version von abgerufen MySecret.

'{{resolve:secretsmanager:MySecret:SecretString:password:AWSPREVIOUS}}'