Verweisen Sie mit von CloudFormation -bereitgestellten Parametertypen auf vorhandene Ressourcen und Systems Manager Manager-Parameter - 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.

Verweisen Sie mit von CloudFormation -bereitgestellten Parametertypen auf vorhandene Ressourcen und Systems Manager Manager-Parameter

Beim Erstellen Ihrer Vorlage können Sie Parameter erstellen, bei denen Benutzer Kennungen vorhandener AWS Ressourcen oder Systems Manager Manager-Parameter eingeben müssen, indem Sie spezielle Parametertypen verwenden, die von CloudFormation bereitgestellt werden.

Übersicht

In können Sie Parameter verwenden CloudFormation, um Ihre Stapel anzupassen, indem Sie bei der Erstellung oder Aktualisierung des Stacks Eingabewerte angeben. Diese Funktion macht Ihre Vorlagen für verschiedene Szenarien wiederverwendbar und flexibel.

Parameter werden im Parameters Abschnitt einer CloudFormation Vorlage definiert. Jeder Parameter hat einen Namen und einen Typ und kann zusätzliche Einstellungen wie einen Standardwert und zulässige Werte haben. Weitere Informationen finden Sie unter CloudFormation Vorlage Parameters Syntax.

Der Parametertyp bestimmt, welche Art von Eingabewert der Parameter akzeptieren kann. Akzeptiert beispielsweise Number nur numerische Werte, String akzeptiert aber Texteingaben.

CloudFormation stellt mehrere zusätzliche Parametertypen bereit, die Sie in Ihren Vorlagen verwenden können, um auf vorhandene AWS Ressourcen und Systems Manager Manager-Parameter zu verweisen.

Diese Parametertypen lassen sich in zwei Kategorien einteilen:

  • AWS-spezifische Parametertypen — CloudFormation stellt eine Reihe von Parametertypen bereit, mit deren Hilfe ungültige Werte beim Erstellen oder Aktualisieren eines Stacks erkannt werden können. Wenn Sie diese Parametertypen verwenden, muss jeder, der Ihre Vorlage verwendet, gültige Werte aus der AWS-Konto Region angeben, in der der Stack erstellt wird.

    Wenn sie den verwenden AWS Management Console, CloudFormation wird eine vorausgefüllte Liste mit vorhandenen Werten aus ihrem Konto und ihrer Region bereitgestellt. Auf diese Weise muss sich der Benutzer nicht an einen bestimmten Namen oder eine ID erinnern und diese korrekt eingeben. Stattdessen wählen sie einfach Werte aus einer Drop-down-Liste aus. In einigen Fällen können sie sogar anhand der ID, des Namens oder des Name Tag-Werts nach Werten suchen.

  • Systems Manager Manager-Parametertypen — stellt CloudFormation auch Parametertypen bereit, die vorhandenen Parametern im Systems Manager Manager-Parameterspeicher entsprechen. Wenn Sie diese Parametertypen verwenden, muss jeder, der Ihre Vorlage verwendet, einen Parameter Store-Schlüssel als Wert für den Systems Manager Manager-Parametertyp angeben und CloudFormation dann den neuesten Wert aus dem Parameter Store abrufen, um ihn in seinem Stack zu verwenden. Dies kann nützlich sein, wenn Sie Anwendungen häufig mit neuen Eigenschaftswerten aktualisieren müssen, z. B. dem neuen Amazon Machine Image (AMI)IDs. Informationen zum Parameterspeicher finden Sie unter Systems Manager Parameter Store.

Sobald Ihre Parameter in Parameters diesem Abschnitt definiert sind, können Sie mithilfe der Ref Funktion in der gesamten CloudFormation Vorlage auf Parameterwerte verweisen.

Beispiel

Das folgende Beispiel zeigt eine Vorlage, die die folgenden Parametertypen verwendet.

  • AWS::EC2::VPC::Id

  • AWS::EC2::Subnet::Id

  • AWS::EC2::KeyPair::KeyName

  • AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>

Um einen Stack aus dieser Vorlage zu erstellen, müssen Sie eine bestehende VPC ID, Subnetz-ID und einen Schlüsselpaarnamen aus Ihrem Konto angeben. Sie können auch einen vorhandenen Parameter Store-Schlüssel angeben, der auf die gewünschte AMI ID verweist, oder den Standardwert von /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 beibehalten. Dieser öffentliche Parameter ist ein Alias für die regionale AMI ID für das neueste Amazon Linux AMI 2. Weitere Informationen zu öffentlichen Parametern finden Sie unter Discovering public parameters in Parameter Store im AWS Systems Manager Benutzerhandbuch.

JSON

{ "Parameters": { "VpcId": { "Description": "ID of an existing Virtual Private Cloud (VPC).", "Type": "AWS::EC2::VPC::Id" }, "PublicSubnetId": { "Description": "ID of an existing public subnet within the specified VPC.", "Type": "AWS::EC2::Subnet::Id" }, "KeyName": { "Description": "Name of an existing EC2 key pair to enable SSH access to the instance.", "Type": "AWS::EC2::KeyPair::KeyName" }, "AMIId": { "Description": "Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI).", "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>", "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" } }, "Resources": { "InstanceSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Enable SSH access via port 22", "VpcId": { "Ref": "VpcId" }, "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIp": "0.0.0.0/0" } ] } }, "Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "KeyName": { "Ref": "KeyName" }, "ImageId": { "Ref": "AMIId" }, "NetworkInterfaces": [ { "AssociatePublicIpAddress": "true", "DeviceIndex": "0", "SubnetId": { "Ref": "PublicSubnetId" }, "GroupSet": [{ "Ref": "InstanceSecurityGroup" }] } ] } } }, "Outputs": { "InstanceId": { "Value": { "Ref": "Ec2Instance" } } } }

YAML

Parameters: VpcId: Description: ID of an existing Virtual Private Cloud (VPC). Type: 'AWS::EC2::VPC::Id' PublicSubnetId: Description: ID of an existing public subnet within the specified VPC. Type: 'AWS::EC2::Subnet::Id' KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instance. Type: 'AWS::EC2::KeyPair::KeyName' AMIId: Description: Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI). Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' Resources: InstanceSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable SSH access via port 22 VpcId: !Ref VpcId SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 Ec2Instance: Type: 'AWS::EC2::Instance' Properties: KeyName: !Ref KeyName ImageId: !Ref AMIId NetworkInterfaces: - AssociatePublicIpAddress: "true" DeviceIndex: "0" SubnetId: !Ref PublicSubnetId GroupSet: - !Ref InstanceSecurityGroup Outputs: InstanceId: Value: !Ref Ec2Instance

AWS CLI Befehl zum Erstellen des Stacks

Das Folgende create-stackDer Befehl erstellt einen Stapel auf der Grundlage der Beispielvorlage.

aws cloudformation create-stack --stack-name MyStack \ --template-body file://sampletemplate.json \ --parameters \ ParameterKey="VpcId",ParameterValue="vpc-a123baa3" \ ParameterKey="PublicSubnetId",ParameterValue="subnet-123a351e" \ ParameterKey="KeyName",ParameterValue="MyKeyName" \ ParameterKey="AMIId",ParameterValue="MyParameterKey"

Um einen Parametertyp zu verwenden, der eine Liste von Zeichenfolgen akzeptiertList<AWS::EC2::Subnet::Id>, müssen Sie die Kommas innerhalb von ParameterValue mit einem doppelten Backslash maskieren, wie im folgenden Beispiel gezeigt.

--parameters ParameterKey="SubnetIDs",ParameterValue="subnet-5ea0c127\\,subnet-6194ea3b\\,subnet-c87f2be0"

Überlegungen

Es wird dringend empfohlen, dynamische Verweise zu verwenden, um den Zugriff auf vertrauliche Konfigurationsdefinitionen wie Anmeldeinformationen von Drittanbietern einzuschränken. Weitere Informationen finden Sie unter Ruft mithilfe dynamischer Verweise Werte ab, die in anderen Diensten gespeichert sind.

Wenn Sie Vorlagenbenutzern die Möglichkeit geben möchten, Werte aus verschiedenen Quellen anzugeben AWS-Konten, verwenden Sie keine AWS-spezifischen Parametertypen. Definieren Sie stattdessen Parameter vom Typ String oderCommaDelimitedList.

Bei den Systems Manager Manager-Parametertypen sind einige Dinge zu beachten:

  • Sie können die aufgelösten Parameterwerte auf der Registerkarte „Parameter“ des Stacks in der Konsole oder durch folgenden Befehl anzeigen describe-stacks oder describe-change-set. Denken Sie daran, dass diese Werte bei der Erstellung oder Aktualisierung des Stacks festgelegt werden, sodass sie sich möglicherweise von den neuesten Werten im Parameter Store unterscheiden.

  • Wenn Sie bei Stack-Aktualisierungen die Option Bestehenden Wert verwenden (oder UsePreviousValue auf true setzen) verwenden, bedeutet dies, dass Sie weiterhin denselben Parameter Store-Schlüssel verwenden möchten, nicht seinen Wert. CloudFormation ruft immer den neuesten Wert ab.

  • Wenn Sie zulässige Werte oder andere Einschränkungen angeben, werden diese anhand der von Ihnen angegebenen Parameterschlüssel CloudFormation überprüft, nicht jedoch anhand ihrer Werte. Sie sollten die Werte im Parameter Store selbst validieren.

  • Wenn Sie Stacks erstellen oder aktualisieren und Änderungssätze erstellen, CloudFormation verwendet es den Wert, der zu diesem Zeitpunkt im Parameter Store vorhanden ist. Wenn ein angegebener Parameter nicht im Parameter Store unter dem des Aufrufers vorhanden ist AWS-Konto, wird ein Validierungsfehler CloudFormation zurückgegeben.

  • Wenn Sie einen Änderungssatz ausführen, CloudFormation verwendet die Werte, die im Änderungssatz angegeben sind. Sie sollten diese Werte vor der Ausführung des Änderungssatzes prüfen, da sie sich im Parameter Store zwischen dem Zeitpunkt, an dem der Änderungssatz erstellt wurde, und dem Zeitpunkt, an dem er ausgeführt wird, ändern können.

  • Für Parameter Store-Parameter, die in demselben gespeichert sind AWS-Konto, müssen Sie den Parameternamen angeben. Für Parameter Store-Parameter, die von anderen gemeinsam genutzt werden AWS-Konto, müssen Sie den vollständigen Parameter angebenARN.

Unterstützte AWS-spezifische Parametertypen

CloudFormation unterstützt die folgenden AWS-spezifischen Typen:

AWS::EC2::AvailabilityZone::Name

Gibt eine Availability Zone an (zum Beispiel us-west-2a).

AWS::EC2::Image::Id

Eine EC2 Amazon-Image-ID, z. ami-0ff8a91507f77f867 B. Beachten Sie, dass die CloudFormation Konsole keine Dropdownliste mit Werten für diesen Parametertyp anzeigt.

AWS::EC2::Instance::Id

Eine EC2 Amazon-Instance-ID, z. i-1e731a32 B.

AWS::EC2::KeyPair::KeyName

Ein EC2 Amazon-Schlüsselpaarname.

AWS::EC2::SecurityGroup::GroupName

Ein Standardname für eine VPC Sicherheitsgruppe, z. my-sg-abc B.

AWS::EC2::SecurityGroup::Id

Gibt die ID einer Sicherheitsgruppe an (zum Beispiel sg-a123fd85).

AWS::EC2::Subnet::Id

Gibt eine Subnetz-ID an (zum Beispiel subnet-123a351e).

AWS::EC2::Volume::Id

Eine EBS Amazon-Volume-ID, z. vol-3cdd3f56 B.

AWS::EC2::VPC::Id

Eine VPC ID, wievpc-a123baa3.

AWS::Route53::HostedZone::Id

Gibt die ID einer gehosteten Amazon Route 53-Zone an (zum Beispiel Z23YXV4OVPL04A).

List<AWS::EC2::AvailabilityZone::Name>

Gibt ein Array von Availability Zones in einer Region an (zum Beispiel us-west-2a, us-west-2b).

List<AWS::EC2::Image::Id>

Eine Reihe von EC2 Amazon-BildernIDs, wie ami-0ff8a91507f77f867, ami-0a584ac55a7631c0c z. Beachten Sie, dass die CloudFormation Konsole keine Dropdownliste mit Werten für diesen Parametertyp anzeigt.

List<AWS::EC2::Instance::Id>

Eine Reihe von EC2 Amazon-InstancesIDs, wie i-1e731a32, i-1e731a34 z.

List<AWS::EC2::SecurityGroup::GroupName>

Eine Reihe von Standardnamen für VPC Sicherheitsgruppen, wie my-sg-abc, my-sg-def z.

List<AWS::EC2::SecurityGroup::Id>

Eine Reihe von SicherheitsgruppenIDs, z. sg-a123fd85, sg-b456fd85 B.

List<AWS::EC2::Subnet::Id>

Ein Array von SubnetzenIDs, z. B. subnet-123a351e, subnet-456b351e

List<AWS::EC2::Volume::Id>

Eine Reihe von EBS Amazon-VolumenIDs, wie vol-3cdd3f56, vol-4cdd3f56 z.

List<AWS::EC2::VPC::Id>

Eine Reihe von VPCIDs, wie zum Beispielvpc-a123baa3, vpc-b456baa3.

List<AWS::Route53::HostedZone::Id>

Eine Reihe von von Amazon Route 53-gehosteten ZonenIDs, z. Z23YXV4OVPL04A, Z23YXV4OVPL04B B.

Unterstützte Systems Manager Manager-Parametertypen

CloudFormation unterstützt die folgenden Systems Manager Manager-Parametertypen:

AWS::SSM::Parameter::Name

Der Name eines Systems Manager-Parameterschlüssels. Verwenden Sie diesen Parametertyp nur, um zu überprüfen, ob ein erforderlicher Parameter vorhanden ist. CloudFormation ruft den tatsächlichen Wert, der dem Parameter zugeordnet ist, nicht ab.

AWS::SSM::Parameter::Value<String>

Ein Systems Manager-Parameter, dessen Wert eine Zeichenfolge ist. Dies entspricht dem Parametertyp String im Parameter Store.

AWS::SSM::Parameter::Value<List<String>> oder AWS::SSM::Parameter::Value<CommaDelimitedList>

Ein Systems Manager-Parameter, dessen Wert eine Liste von Zeichenfolgen ist. Dies entspricht dem Parametertyp StringList im Parameter Store.

AWS::SSM::Parameter::Value<AWS-specific parameter type>

Ein Systems Manager Manager-Parameter, dessen Wert ein AWS-spezifischer Parametertyp ist.

Das folgende Beispiel gibt z. B. den Typ AWS::EC2::KeyPair::KeyName an:

  • AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>

AWS::SSM::Parameter::Value<List<AWS-specific parameter type>>

Ein Systems Manager Manager-Parameter, dessen Wert eine Liste von AWS-spezifischen Parametertypen ist.

Das folgende Beispiel gibt z. B. eine Liste der AWS::EC2::KeyPair::KeyName-Typen an:

  • AWS::SSM::Parameter::Value<List<AWS::EC2::KeyPair::KeyName>>

Nicht unterstützte Systems Manager Manager-Parametertypen

CloudFormation unterstützt den folgenden Systems Manager Manager-Parametertyp nicht:

  • Listen von Systems Manager Manager-Parametertypen — zum Beispiel: List<AWS::SSM::Parameter::Value<String>>

Unterstützt außerdem CloudFormation nicht die Definition von Vorlagenparametern als SecureString Systems Manager Manager-Parametertypen. Sie können jedoch sichere Zeichenfolgen als Parameterwerte für bestimmte Ressourcen angeben. Weitere Informationen finden Sie unter Ruft mithilfe dynamischer Verweise Werte ab, die in anderen Diensten gespeichert sind.