Parameter - AWS CloudFormation

Parameter

Mit dem optionalen Abschnitt Parameters können Sie Ihre Vorlagen anpassen. Parameter ermöglichen Ihnen die Eingabe benutzerdefinierter Werte in Ihrer Vorlage jedes Mal, wenn Sie einen Stack erstellen oder aktualisieren.

Definieren eines Parameters in einer Vorlage

Das folgende Beispiel deklariert einen Parameter namens InstanceTypeParameter. Mit diesem Parameter können Sie den Amazon EC2-Instance-Typ für den Stack angeben, der beim Erstellen oder Aktualisieren des Stacks verwendet werden soll.

Beachten Sie, dass InstanceTypeParameter den Standardwert t2.micro besitzt. Dies ist der Wert, den AWS CloudFormation für die Bereitstellung des Stacks verwendet, sofern kein anderer Wert bereitgestellt wird.

JSON

"Parameters" : { "InstanceTypeParameter" : { "Type" : "String", "Default" : "t2.micro", "AllowedValues" : ["t2.micro", "m1.small", "m1.large"], "Description" : "Enter t2.micro, m1.small, or m1.large. Default is t2.micro." } }

YAML

Parameters: InstanceTypeParameter: Type: String Default: t2.micro AllowedValues: - t2.micro - m1.small - m1.large Description: Enter t2.micro, m1.small, or m1.large. Default is t2.micro.

Verweisen auf einen Parameter in einer Vorlage

Sie verwenden die intrinsische Funktion Ref, um auf einen Parameter zu verweisen, und AWS CloudFormation verwendet den Wert des Parameters für die Bereitstellung des Stacks. Sie können Parameter aus den Vorlagenabschnitten Resources und Outputs derselben Vorlage referenzieren.

Im folgenden Beispiel referenziert die Eigenschaft InstanceType der EC2-Instance-Ressource den Parameterwert InstanceTypeParameter:

JSON

"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceTypeParameter" }, "ImageId" : "ami-0ff8a91507f77f867" } }

YAML

Ec2Instance: Type: AWS::EC2::Instance Properties: InstanceType: Ref: InstanceTypeParameter ImageId: ami-0ff8a91507f77f867

Allgemeine Anforderungen für Parameter

Die folgenden Anforderungen gelten bei der Verwendung von Parametern:

  • In einer AWS CloudFormation-Vorlage lassen sich maximal 200 Parameter definieren.

  • Jedem Parameter muss ein logischer Name (auch als logische ID bezeichnet) gegeben werden, der unter allen logischen Namen innerhalb der Vorlage alphanumerisch und eindeutig sein muss.

  • Jedem Parameter muss ein Parametertyp zugewiesen werden, der von AWS CloudFormation unterstützt wird. Weitere Informationen finden Sie unter Type.

  • Jedem Parameter muss zur Laufzeit ein Wert für AWS CloudFormation zugewiesen werden, damit der Stack erfolgreich bereitgestellt wird. Sie können optional einen Standardwert für AWS CloudFormation angeben, der verwendet werden soll, sofern kein anderer Wert bereitgestellt wird.

  • Die Parameter innerhalb derselben Vorlage deklariert und referenziert werden. Sie können Parameter aus den Vorlagenabschnitten Resources und Outputs der Vorlage referenzieren.

JSON

"Parameters" : { "ParameterLogicalID" : { "Type" : "DataType", "ParameterProperty" : "value" } }

YAML

Parameters: ParameterLogicalID: Type: DataType ParameterProperty: value

Properties

AllowedPattern

Gibt einen regulären Ausdruck an, der die zulässigen Muster für String-Typen beschreibt. Das Muster muss mit dem gesamten angegebenen Parameterwert übereinstimmen.

Required: No

AllowedValues

Gibt ein Array mit einer Liste der für den Parameter zulässigen Werte an.

Required: No

ConstraintDescription

Gibt eine Zeichenfolge als Beschreibung für eine Einschränkung an. Diese Beschreibung wird bei Verstößen gegen die Einschränkung angezeigt. Für einen Parameter mit einem zulässigen Muster [A-Za-z0-9]+ beispielsweise wird ohne Einschränkungsbeschreibung die folgende Fehlermeldung angezeigt, wenn der Benutzer einen ungültigen Wert angibt:

Malformed input-Parameter MyParameter must match pattern [A-Za-z0-9]+

Durch das Hinzufügen der Beschreibung einer Einschränkung, wie z. B. dürfen nur Groß- und Kleinbuchstaben und Zahlen enthalten, können Sie die folgende benutzerdefinierte Fehlermeldung anzeigen:

Malformed input-Parameter MyParameter must only contain uppercase and lowercase letters and numbers

Required: No

Default

Gibt einen Wert des entsprechenden Typs an, den die Vorlage nutzen soll, wenn zum Zeitpunkt der Stack-Erstellung kein Wert angegeben wird. Wenn Sie Einschränkungen für den Parameter definieren, müssen Sie einen Wert angeben, der diese Einschränkungen einhält.

Required: No

Description

Gibt eine Zeichenfolge mit maximal 4 000 Zeichen an, die den Parameter beschreibt.

Required: No

MaxLength

Gibt einen Ganzzahlwert an, der festlegt, wie viele Zeichen maximal für String-Typen zulässig sind.

Required: No

MaxValue

Gibt einen numerischen Wert an, der den zulässigen numerischen Maximalwert für Number-Typen definiert.

Required: No

MinLength

Gibt einen Ganzzahlwert an, der die zulässige Mindestzeichenzahl für String-Typen definiert.

Required: No

MinValue

Gibt einen numerischen Wert an, der den zulässigen numerischen Mindestwert für Number-Typen definiert.

Required: No

NoEcho

Legt fest, ob der Parameterwert maskiert werden soll, damit er in der Konsole, in Befehlszeilen-Tools und in der API nicht angezeigt wird. Wenn Sie das NoEcho-Attribut auf true festlegen, gibt CloudFormation für alle Aufrufe, die den Stack oder die Stapelereignisse beschreiben, den als Sternchen (*****) maskierten Parameterwert zurück, mit Ausnahme der Informationen, die an den folgenden Speicherorten gespeichert sind.

Required: No

Wichtig

Durch die Verwendung des NoEcho-Attributs werden keine Informationen maskiert, die im Folgenden gespeichert sind:

  • Der Metadata-Vorlagenabschnitt. CloudFormation transformiert, ändert und überarbeitet keine Informationen, die Sie im Metadata-Abschnitt einfügen. Weitere Informationen finden Sie unter Metadaten.

  • Der Outputs-Vorlagenabschnitt. Weitere Informationen finden Sie unter Ausgaben:

  • Das Metadata-Attribut einer Ressourcendefinition. Weitere Informationen finden Sie unter Metadaten-Attribut.

Es wird dringend empfohlen, diese Mechanismen nicht zu verwenden, um vertrauliche Informationen wie Passwörter oder Geheimnisse einzugeben.

Wichtig

Statt vertrauliche Informationen direkt in Ihre CloudFormation-Vorlagen einzubetten, sollten Sie mittels dynamischer Parameter in der Stack-Vorlage auf vertrauliche Informationen verweisen. Diese sollten außerhalb von CloudFormation gespeichert und verwaltet werden, z. B. im AWS Systems Manager Parameter Store oder in AWS Secrets Manager.

Weitere Informationen finden Sie in den bewährten Methoden zu Keine Anmeldeinformationen in Ihre Vorlagen einbetten.

Wichtig

Wir raten deutlich davon ab, NoEcho-Parameter oder vertrauliche Daten in Ressourceneigenschaften einzubeziehen, die Teil der primären Kennung einer Ressource sind.

Wenn ein NoEcho-Parameter in einer Eigenschaft enthalten ist, die eine primäre Ressourcenkennung bildet, kann CloudFormation den tatsächlichen Klartext-Wert in der primären Ressourcenkennung verwenden. Diese Ressourcen-ID kann in allen abgeleiteten Ausgaben oder Zielen angezeigt werden.

Um festzulegen, welche Ressourceneigenschaften die primäre Kennung eines Ressourcentyps umfassen, finden Sie weitere Informationen in der Ressourcenreferenzdokumentation für diese Ressource. Im Abschnitt Rückgabewerte stellt der Ref-Funktionsrückgabewert die Ressourceneigenschaften dar, die die primäre Kennung des Ressourcentyps umfassen.

Type

Gibt den Datentyp des Parameters an (DataType).

Required: Yes

AWS CloudFormation unterstützt die folgenden Parametertypen:

String

Gibt eine Literalzeichenfolge an.

Zum Beispiel könnten Benutzer "MyUserName" angeben.

Number

AWS CloudFormation validiert den Parameterwert als Zahl. Wenn Sie den Parameter jedoch an anderer Stelle in Ihrer Vorlage verwenden (zum Beispiel über die intrinsische Funktion Ref), wird der Parameterwert eine Zeichenfolge.

Zum Beispiel könnten Benutzer "8888" angeben.

List<Number>

Ein Array aus Ganzzahlen oder Gleitkommazahlen, die durch Kommas getrennt sind. AWS CloudFormation validiert den Parameterwert als Zahlen; wenn Sie den Parameter jedoch an anderer Stelle in Ihrer Vorlage verwenden (z. B. mit der intrinsischen Ref-Funktion), wird der Parameterwert zu einer Liste von Zeichenfolgen.

Zum Beispiel könnten Benutzer "80,20" angeben. Ref würde dann ["80","20"] zurückgeben.

CommaDelimitedList

Gibt ein Array von Literalzeichenfolgen an, jeweils durch Komma getrennt. Die Gesamtanzahl von Zeichenfolgen sollte um 1 höher sein als die Gesamtanzahl von Kommas. Jede Mitgliedszeichenfolge wird zudem gekürzt.

Zum Beispiel könnten Benutzer "test,dev,prod" angeben. Ref würde dann ["test","dev","prod"] zurückgeben.

AWS-spezifische Parametertypen

AWS-Werte wie die Namen von Amazon EC2-Schlüsselpaaren und VPC-IDs. Weitere Informationen finden Sie unter AWS-spezifische Parametertypen.

SSM-Parametertypen

Parameter, die vorhandenen Parametern im Systems Manager Parameter Store entsprechen. Sie geben einen Systems Manager-Parameterschlüssel als wert des Parameters SSM an. AWS CloudFormation ruft dann den neuesten Wert aus dem Parameter Store ab, der für den Stack verwendet werden soll. Weitere Informationen finden Sie unter SSM-Parametertypen.

AWS-spezifische Parametertypen

AWS-spezifische Parametertypen sind hilfreich, um ungültige Werte bereits direkt zu Beginn einer Stack-Erstellung oder Stack-Aktualisierung zu identifizieren. Um Parameter mit AWS-spezifischen Typen anzugeben, muss ein Vorlagenbenutzer vorhandene AWS-Werte eingeben, die sich in seinem AWS-Konto befinden. AWS CloudFormation validiert diese Eingabewerte mit den vorhandenen Werten im Konto. Beispiel: Im Falle des Parametertyps AWS::EC2::VPC::Id muss der Benutzer eine vorhandene VPC-ID aus seinem Konto eingeben. Diese ID muss außerdem in der Region sein, in der der Stack erstellt wird.

Wenn Sie es Vorlagenbenutzern ermöglichen möchten, Eingabewerte aus verschiedenen AWS-Konten einzugeben, definieren Sie keine Parameter mit AWS-spezifischen Typen, sondern Parameter vom Typ String (oder CommaDelimitedList).

Unterstützte AWS-spezifische Parametertypen

AWS 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

Gibt die ID eines Amazon EC2-Abbilds an (zum Beispiel ami-0ff8a91507f77f867). Beachten Sie: In der AWS CloudFormation-Konsole wird für diesen Parametertyp keine Dropdown-Liste mit Werten angezeigt.

AWS::EC2::Instance::Id

Gibt die ID einer Amazon EC2-Instance an (zum Beispiel i-1e731a32).

AWS::EC2::KeyPair::KeyName

Gibt den Namen eines Amazon EC2-Schlüsselpaars an.

AWS::EC2::SecurityGroup::GroupName

Gibt den Namen einer EC2-Classic-Sicherheitsgruppe oder einer standardmäßigen VPC-Sicherheitsgruppe an (zum Beispiel 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>

Gibt ein Array von Amazon EC2-Abbild-IDs an (zum Beispiel ami-0ff8a91507f77f867, ami-0a584ac55a7631c0c). Beachten Sie: In der AWS CloudFormation-Konsole wird für diesen Parametertyp keine Dropdown-Liste mit Werten angezeigt.

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

Gibt ein Array von Amazon EC2-Instance-IDs an (zum Beispiel i-1e731a32, i-1e731a34).

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

Gibt ein Array von Namen von EC2-Classic-Sicherheitsgruppen oder standardmäßigen VPC-Sicherheitsgruppen an (zum Beispiel my-sg-abc, my-sg-def).

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

Gibt ein Array von Sicherheitsgruppen-IDs an (zum Beispiel sg-a123fd85, sg-b456fd85).

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

Gibt ein Array von Subnetz-IDs an (zum Beispiel subnet-123a351e, subnet-456b351e).

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

Gibt ein Array von Amazon EBS-Volume-IDs an (zum Beispiel vol-3cdd3f56, vol-4cdd3f56).

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

Gibt ein Array von VPC-IDs an (zum Beispiel vpc-a123baa3, vpc-b456baa3).

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

Gibt ein Array von IDs gehosteter Amazon Route 53-Zonen an (zum Beispiel Z23YXV4OVPL04A, Z23YXV4OVPL04B).

SSM-Parametertypen

SSM-Parametertypen entsprechen vorhandenen Parametern im Systems Manager Parameter Store. Sie geben einen Systems Manager-Parameterschlüssel als wert des Parameters SSM an. AWS CloudFormation ruft dann den neuesten Wert aus dem Parameter Store ab, der für den Stack verwendet werden soll. Weitere Informationen zu Systems Manager-Parametern finden Sie unter Systems Manager Parameter Store im AWS Systems Manager-Benutzerhandbuch.

Sie können auch das dynamische Parametermuster ssm oder ssm-secure verwenden, um Parameter-Werte in Ihrer Vorlage festzulegen. Weitere Informationen finden Sie unter Verwenden von dynamischen Referenzen zum Angeben von Vorlagenwerten.

Wenn Sie Stacks erstellen oder aktualisieren und Änderungssätze erstellen, arbeitet AWS CloudFormation mit den Werten, die in Parameter Store zu dem Zeitpunkt vorhanden sind, an dem die Operation ausgeführt wird. Wenn ein bestimmter Parameter unter dem AWS-Konto des Aufrufers in Parameter Store nicht vorhanden ist, gibt AWS CloudFormation einen Validierungsfehler zurück.

Beim Ausführen eines Änderungssatzes verwendet AWS CloudFormation die Werte, die im Änderungssatz festlegt werden. 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.

Tipp

Sie können die aufgelösten Werte für die SSM-Parameter auf der Registerkarte Parameters des Stacks in der Konsole oder durch Ausführen von describe-stacks oder describe-change-set anzeigen. Dabei handelt es sich um die Werte, die derzeit in der Stack-Definition für die entsprechenden Systems Manager-Parameterschlüssel verwendet werden. Beachten Sie, dass diese Werte festgelegt werden, wenn der Stack erstellt oder aktualisiert wird. Sie können also möglicherweise von den neuesten Werten im Parameter Store abweichen.

Wenn Sie sichere Zeichenfolgen als Parameterwerte mit dem Muster ssm-secure angeben, speichert AWS CloudFormation den Wert für sichere Zeichenfolgen nicht und zeigt ihn nicht in der Konsole oder in den Ergebnissen von API-Aufrufen an.

Da der Wert eines SSM-Parameters ein Systems Manager-Parameterschlüssel ist, sollten Sie das folgende Verhalten beachten:

  • Bei Stack-Aktualisierungen weisen die Option Use existing value (Vorhandenen Wert) in der Konsole und das Attribut UsePreviousValue für update-stack AWS CloudFormation an, den vorhandenen Systems Manager-Parameterschlüssel zu verwenden – nicht dessen Wert. AWS CloudFormation holt immer die neuesten Werte aus dem Parameter Store, wenn es Stacks aktualisiert.

    Wenn Sie jedoch das dynamische Parametermuster ssm oder ssm-secure verwenden, um Parameterwerte anzugeben, müssen Sie eine Version des Parameters Systems Manager angeben, die von AWS CloudFormation verwendet wird.

  • AWS CloudFormation kann eine Validierung für Systems Manager-Parameterschlüssel durchführen, jedoch nicht für deren zugehörigen Werte. Für Validierungszwecke können Parameterschlüssel als Zeichenfolgen behandelt werden. Sie sollten eine Validierung der Systems Manager-Parameterwerte im Parameter Store durchführen.

Unter SSM Parametertypen finden Sie Beispiele für die Verwendung von SSM-Parametertypen.

Unterstützte SSM-Parametertypen

AWS CloudFormation unterstützt die folgenden SSM-Parametertypen:

AWS::SSM::Parameter::Name

Der Name eines Systems Manager-Parameterschlüssels.

Verwenden Sie diesen Parameter, wenn Sie den Parameterschlüssel übergeben möchten. Beispielsweise können Sie anhand dieses Typs überprüfen, ob der Parameter vorhanden ist.

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-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-Parameter, dessen Wert eine Liste AWS-spezifischer 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 SSM-Parametertypen

AWS CloudFormation unterstützt die folgenden SSM-Parametertypen nicht:

  • Liste der SSM–Parametertypen— – z. B.: List<AWS::SSM::Parameter::Value<String>>

Darüber hinaus unterstützt AWS CloudFormation nicht die Definition von Vorlagenparametern als SecureString-Systems Manager-Parametertypen. Sie können jedoch sichere Zeichenfolgen als Parameter-Werte für bestimmte Ressourcen angeben, indem Sie dynamische Parametermuster verwenden. Weitere Informationen finden Sie unter Verwenden von dynamischen Referenzen zum Angeben von Vorlagenwerten.

Gruppieren und Sortieren von Parametern in der AWS CloudFormation-Konsole

Wenn Sie über die AWS CloudFormation-Konsole Stacks erstellen oder aktualisieren, werden die Eingabeparameter in der Konsole alphabetisch basierend auf ihrer logischen ID aufgelistet. Diese Standardsortierung lässt sich mit dem Metadatenschlüssel AWS::CloudFormation::Interface außer Kraft setzen. Eine Gruppierung und Sortierung der Parameter macht es den Benutzer einfacher, Parameterwerte anzugeben. Beispielsweise könnten Sie alle VPC-bezogenen Parameter in einer Gruppe zusammenfassen, sodass sie nicht über die gesamte alphabetische Liste verteilt sind.

Im Metadatenschlüssel können Sie angeben, welche Gruppen erstellt werden sollen, welche Parameter in die jeweiligen Gruppen eingeschlossen werden sollen und in welcher Reihenfolge die Parameter innerhalb der einzelnen Gruppen in der Konsole angezeigt werden sollen. Sie können außerdem benutzerfreundliche Parameternamen definieren, damit in der Konsole statt logischer IDs aussagekräftige Namen angezeigt werden. Alle Parameter, die Sie im Metadatenschlüssel referenzieren, müssen im Abschnitt Parameters der Vorlage deklariert sein.

Weitere Informationen und ein Beispiel für den Metadatenschlüssel AWS::CloudFormation::Interface finden Sie unter AWS::CloudFormation::Interface.

Beispiele

Grundlegende Eingabeparameter

Das folgende Beispiel zeigt einen Abschnitt Parameters, in dem zwei Parameter deklariert sind. Der Parameter DBPort ist ein Parameter des Typs Number mit dem Standardwert 3306. Der zulässige Mindestwert ist 1150, der zulässige Maximalwert 65535. Der Parameter DBPwd ist ein Parameter des Typs String. Er hat keinen Standardwert. Die Eigenschaft NoEcho ist auf true gesetzt. Aufrufe, die den Stack beschreiben (zum Beispiel der aws cloudformation describe-stacks-AWS CLI-Befehl ), geben den Wert des Parameters daher nicht zurück. Die zulässige Mindestlänge ist 1, die zulässige Maximallänge 41. Das Muster erlaubt die Verwendung von Klein- und Großbuchstaben sowie Ziffern.

JSON

"Parameters" : { "DBPort" : { "Default" : "3306", "Description" : "TCP/IP port for the database", "Type" : "Number", "MinValue" : "1150", "MaxValue" : "65535" }, "DBPwd" : { "NoEcho" : "true", "Description" : "The database admin account password", "Type" : "String", "MinLength" : "1", "MaxLength" : "41", "AllowedPattern" : "^[a-zA-Z0-9]*$" } }

YAML

Parameters: DBPort: Default: 3306 Description: TCP/IP port for the database Type: Number MinValue: 1150 MaxValue: 65535 DBPwd: NoEcho: true Description: The database admin account password Type: String MinLength: 1 MaxLength: 41 AllowedPattern: ^[a-zA-Z0-9]*$

AWS-spezifische Parametertypen

Wenn Sie AWS-spezifische Parametertypen verwenden, muss ein Benutzer, der Ihre Vorlage zum Erstellen oder Aktualisieren eines Stacks verwendet, vorhandene AWS-Werte angeben, die sich im Benutzerkonto und in der Region für den aktuellen Stack befinden. AWS-spezifische Parametertypen helfen sicherzustellen, dass Eingabewerte für diese Typen vorhanden sind und korrekt sind, bevor AWS CloudFormation-Ressourcen erstellt oder aktualisiert. Wenn Sie beispielsweise den Parametertyp AWS::EC2::KeyPair::KeyName verwenden, gleicht AWS CloudFormation den Eingabewert mit den vorhandenen Schlüsselpaarnamen des Benutzers ab, bevor Ressourcen wie Amazon EC2-Instances erstellt werden.

Verwendet der Benutzer die AWS Management Console, bietet AWS CloudFormation für AWS-spezifische Parametertypen automatisch gültige Werte an. Der Benutzer muss also keine bestimmten Namen oder IDs kennen und korrekt eingeben. Sie würden nur einen oder mehrere Werte aus einer Dropdown-Liste auswählen. Je nach Parametertyp können Benutzer auch Werte basierend auf ID, Name oder dem Wert des Name-Tags suchen. Weitere Informationen finden Sie unter Festlegen von Stack-Name und Parametern.

Im folgenden Beispiel sind zwei Parameter mit den Typen AWS::EC2::KeyPair::KeyName und AWS::EC2::Subnet::Id deklariert. Diese Typen beschränken die gültigen Werte auf vorhandene Schlüsselpaarnamen und Subnetz-IDs. Da der Parameter mySubnetIDs als Liste angegeben ist, kann der Benutzer eine oder mehrere Subnetz-IDs angeben.

JSON

"Parameters" : { "myKeyPair" : { "Description" : "Amazon EC2 Key Pair", "Type" : "AWS::EC2::KeyPair::KeyName" }, "mySubnetIDs" : { "Description" : "Subnet IDs", "Type" : "List<AWS::EC2::Subnet::Id>" } }

YAML

Parameters: myKeyPair: Description: Amazon EC2 Key Pair Type: "AWS::EC2::KeyPair::KeyName" mySubnetIDs: Description: Subnet IDs Type: "List<AWS::EC2::Subnet::Id>"

AWS CLI und API-Unterstützung

Derzeit können Benutzer über die AWS CLI- oder die AWS CloudFormation-API keine Liste der gültigen Werte für AWS-spezifische Parameter abrufen. Sie können jedoch über den Befehl aws cloudformation get-template-summary oder die API GetTemplateSummary Informationen zu den einzelnen Parametern abrufen, zum Beispiel den Parametertyp.

Parametertyp für Komma-getrennte Listen

Mithilfe des Parameters CommaDelimitedList können Sie in einem einzigen Parameter mehrere Zeichenfolgewerte angeben. Auf diese Weise können Sie mehrere Werte über einen einzigen Parameter definieren statt über viele verschiedene Parameter. Wenn Sie zum Beispiel drei verschiedene Subnetze mit jeweils eigenem CIDR-Block erstellen, könnten Sie mithilfe von drei unterschiedlichen Parametern drei unterschiedliche CIDR-Blöcke definieren. Einfacher ist es jedoch, stattdessen einen einzigen Parameter anzugeben, der eine Liste von drei CIDR-Blöcken enthält. Das folgende Codebeispiel veranschaulicht das:

JSON

"Parameters" : { "DbSubnetIpBlocks": { "Description": "Comma-delimited list of three CIDR blocks", "Type": "CommaDelimitedList", "Default": "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24" } }

YAML

Parameters: DbSubnetIpBlocks: Description: "Comma-delimited list of three CIDR blocks" Type: CommaDelimitedList Default: "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"

Zurückgeben eines Werts aus einem Parameter für Komma-getrennte Listen

Wenn Sie einen bestimmten Wert aus einer Liste referenzieren möchten, verwenden Sie die intrinsische Funktion Fn::Select im Abschnitt Resources der Vorlage. Sie übergeben den Indexwert des gewünschten Objekts und eine Liste von Objekten, wie im folgenden Codeausschnitt dargestellt:

JSON
"DbSubnet1" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "0", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "0", {"Ref" : "DbSubnetIpBlocks"} ] } } }, "DbSubnet2" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "1", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "1", {"Ref" : "DbSubnetIpBlocks"} ] } } }, "DbSubnet3" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "2", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "2", {"Ref" : "DbSubnetIpBlocks"} ] } } }
YAML
DbSubnet1: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [0, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [0, !Ref DbSubnetIpBlocks] DbSubnet2: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [1, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [1, !Ref DbSubnetIpBlocks] DbSubnet3: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [2, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [2, !Ref DbSubnetIpBlocks]

SSM-Parametertypen

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

Die folgende Vorlage deklariert einen AWS::SSM::Parameter::Value<String>-Parametertyp.

JSON
{ "Parameters": { "InstanceType": { "Type": "AWS::SSM::Parameter::Value<String>" } }, "Resources": { "Instance": { "Type": "AWS::EC2::Instance", "Properties": { "InstanceType": { "Ref": "InstanceType" } } } } }
YAML
Parameters: InstanceType: Type: 'AWS::SSM::Parameter::Value<String>' Resources: Instance: Type: 'AWS::EC2::Instance' Properties: InstanceType: !Ref InstanceType

Der folgende Befehl erstellt einen auf der Beispielvorlage basierenden Stack. Er stellt den Systems Manager-Parameterschlüssel (myInstanceType) als Wert für den Vorlagenparameter InstanceType bereit. Dies setzt voraus, dass der Parameter myInstanceType im Parameter Store unter dem AWS-Konto des Aufrufers vorhanden ist.

aws cloudformation create-stack --stack-name S1 --template-body example template --parameters ParameterKey=InstanceType,ParameterValue=myInstanceType

 

AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>-Typ

Die folgende Vorlage deklariert einen AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>-Parametertyp.

JSON
{ "Parameters": { "ImageId": { "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>" } }, "Resources": { "Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Ref": "ImageId" } } } } }
YAML
Parameters: ImageId: Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Resources: Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: !Ref ImageId

Der folgende Befehl erstellt einen auf der Beispielvorlage basierenden Stack. Er stellt den Systems Manager-Parameterschlüssel (myLatestAMI) als Wert für den Vorlagenparameter ImageId bereit. Dies setzt voraus, dass der Parameter myLatestAMI im Parameter Store unter dem AWS-Konto des Aufrufers vorhanden ist.

aws cloudformation create-stack --stack-name S2 --template-body example template --parameters ParameterKey=ImageId,ParameterValue=myLatestAMI