Geben Sie vorhandene Ressourcen zur Laufzeit mit von CloudFormation -bereitgestellten Parametertypen an - 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.

Geben Sie vorhandene Ressourcen zur Laufzeit mit von CloudFormation -bereitgestellten Parametertypen an

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 ParametersVorlagensyntax.

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 von ID, Name oder Name Tag-Wert nach Werten suchen.

  • Systems Manager-Parametertypen — stellt CloudFormation auch Parametertypen bereit, die vorhandenen Parametern im Systems Manager Parameter Store 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. mit einem 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, eine 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 beibehalten/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2. Dieser öffentliche Parameter ist ein Alias für die regionale AMI-ID für das neueste Amazon Linux 2-AMI. 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

Der folgende create-stackBefehl erstellt einen Stack, der auf der Beispielvorlage basiert.

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 sich die aufgelösten Parameterwerte auf der Registerkarte Parameter des Stacks in der Konsole ansehen oder, indem Sie describe-stacksoder ausführen 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-ARN angeben.

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 standardmäßiger VPC-Sicherheitsgruppenname, z. B. my-sg-abc

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

Gibt die ID eines Amazon-EBS-Volumes an (zum Beispiel vol-3cdd3f56).

AWS::EC2::VPC::Id

Gibt eine VPC-ID an (zum Beispiel vpc-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-Bildern IDs, 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-Instances IDs, wie i-1e731a32, i-1e731a34 z.

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

Eine Reihe von standardmäßigen VPC-Sicherheitsgruppennamen, z. B. my-sg-abc, my-sg-def

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

Eine Reihe von Sicherheitsgruppen IDs, z. B. sg-a123fd85, sg-b456fd85

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

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

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

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

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

Ein Array von VPC IDs, wie vpc-a123baa3, vpc-b456baa3 z.

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

Eine Reihe von von Amazon Route 53-gehosteten Zonen IDs, 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.