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
undsecretsmanager
, 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:
oder service-name
:reference-key
}}''{{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-ParameterAnmerkung
Derzeit werden SecureString Parameter von Systems Manager in den
cn-northwest-1
Regionencn-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 dynamischessm
-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
undsecretsmanager
, 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:
Ressource | Eigenschaftstyp | Eigenschaften |
---|---|---|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
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 dersecretsmanager
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 diesecretsmanager
dynamische Referenz enthält, oder indem Sie eine andere Eigenschaft der Ressource aktualisieren.Angenommen, Sie geben in Ihrer Vorlage die Eigenschaft
MasterPassword
einerAWS::RDS::DBInstance
-Ressource an, die eine dynamische Referenzsecretsmanager
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 RessourceAWS::RDS::DBInstance
in Ihrer Vorlage. In diesem Fall wird, selbst wenn Sie eine Stack-Aktualisierung durchführen, der Secret-Wert in der EigenschaftMasterPassword
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 istSecretString
. - json-key
-
Der Schlüsselname des Schlüssel/Wert-Paares, dessen Wert Sie abrufen möchten. Wenn Sie kein a angeben
json-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 Sieversion-id
nicht an. Wenn Sie wederversion-stage
nochversion-id
angeben, dann ist der Standard dieAWSCURRENT
-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 Sieversion-stage
nicht angeben. Wenn Sie wederversion-stage
nochversion-id
angeben, dann ist der Standard dieAWSCURRENT
-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}}'