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.

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, der zur Bereitstellung des Stacks AWS CloudFormation verwendet wird, sofern kein anderer Wert angegeben 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 Ref systeminterne Funktion, um auf einen Parameter zu verweisen, und verwenden den Wert AWS CloudFormation des Parameters, um den Stack bereitzustellen. 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:

  • Eine Vorlage kann maximal 200 Parameter enthalten. AWS CloudFormation

  • 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 unterstützt wird AWS CloudFormation. Weitere Informationen finden Sie unter Type.

  • Jedem Parameter muss zur Laufzeit ein Wert zugewiesen werden AWS CloudFormation , damit der Stack erfolgreich bereitgestellt werden kann. Sie können optional einen Standardwert angeben, der verwendet werden AWS CloudFormation soll, sofern kein anderer Wert angegeben 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

Eigenschaften

AllowedPattern

Gibt einen regulären Ausdruck an, der die zulässigen Muster für String- oder CommaDelimitedList-Typen beschreibt. Bei der Anwendung auf einen Parameter des Typs String muss das Muster mit dem gesamten angegebenen Parameterwert übereinstimmen. Wenn das Muster auf einen Parameter des Typs CommaDelimitedList angewendet wird, muss es mit jedem Wert in der Liste übereinstimmen.

Required: No

AllowedValues

Gibt ein Array mit einer Liste der für den Parameter zulässigen Werte an. Wenn der Parameterwert auf einen Parameter des Typs String angewendet wird, muss er einer der zulässigen Werte sein. Wenn der Parameterwert auf einen Parameter des Typs CommaDelimitedList angewendet wird, muss jeder Wert in der Liste einer der ausgewählten zulässigen Werte sein.

Required: No

Anmerkung

Wenn Sie YAML verwenden und Yes- und No-Zeichenfolgen für AllowedValues nutzen möchten, geben Sie einfache Anführungszeichen ein, um zu verhindern, dass diese booleschen Werte vom YAML-Parser berücksichtigt werden.

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

Gibt an, 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 setzentrue, wird der als Sternchen (*****) maskierte Parameterwert für alle Aufrufe CloudFormation zurückgegeben, die den Stack oder die Stack-Ereignisse beschreiben, mit Ausnahme von Informationen, die an den unten angegebenen Speicherorten gespeichert sind.

Required: No

Wichtig

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

  • Der Vorlagenbereich. Metadata CloudFormation transformiert, modifiziert oder redigiert keine Informationen, die Sie in den Metadata Abschnitt aufnehmen. Weitere Informationen finden Sie unter Metadaten.

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

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

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

Wichtig

Anstatt vertrauliche Informationen direkt in Ihre CloudFormation Vorlagen einzubetten, empfehlen wir Ihnen, dynamische Parameter in der Stack-Vorlage zu verwenden, um auf vertrauliche Informationen zu verweisen, die außerhalb von gespeichert und verwaltet werden CloudFormation, z. B. im AWS Systems Manager Parameterspeicher oder. AWS Secrets Manager

Weitere Informationen finden Sie unter Keine Anmeldeinformationen in Vorlagen einbetten Best Practice.

Wichtig

Wir empfehlen dringend davon ab, NoEcho-Parameter oder vertrauliche Daten in Ressourceneigenschaften, die Teil der primären ID einer Ressource sind.

Wenn ein NoEcho Parameter in einer Eigenschaft enthalten ist, die eine primäre Ressourcen-ID bildet, CloudFormation kann der tatsächliche Klartext-Wert in der primären Ressourcen-ID 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.

Type

Gibt den Datentyp des Parameters an (DataType).

Erforderlich: Ja

AWS CloudFormation unterstützt die folgenden Parametertypen:

String

Gibt eine Literalzeichenfolge an.

Zum Beispiel könnten Benutzer "MyUserName" angeben.

Number

Eine Ganzzahl oder eine Fließkommazahl. AWS CloudFormation validiert den Parameterwert als Zahl. Wenn Sie den Parameter jedoch an einer anderen Stelle in Ihrer Vorlage verwenden (z. B. mithilfe der Ref systeminternen Funktion), wird der Parameterwert zu einer Zeichenfolge.

Zum Beispiel könnten Benutzer "8888" angeben.

List<Number>

Eine Reihe von Ganzzahlen oder Gleitkommazahlen, die durch Kommas getrennt sind. AWS CloudFormation validiert den Parameterwert als Zahlen. Wenn Sie den Parameter jedoch an einer anderen Stelle in Ihrer Vorlage verwenden (z. B. mithilfe der Ref systeminternen 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 Amazon EC2 EC2-Schlüsselpaarnamen 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 Manager-Parameterschlüssel als Wert des SSM Parameters an und AWS CloudFormation rufen den neuesten Wert aus dem Parameterspeicher ab, um ihn für den Stack zu verwenden. 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 anhand vorhandener Werte 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 definieren Sie Parameter des Typs 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-Images 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-Image-IDs an (zum Beispiel ami-0ff8a91507f77f867, ami-0a584ac55a7631c0c). Beachten Sie, dass die AWS CloudFormation Konsole keine Dropdownliste mit Werten für diesen Parametertyp anzeigt.

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 Manager-Parameterschlüssel als Wert des SSM Parameters an und AWS CloudFormation rufen den neuesten Wert aus dem Parameterspeicher ab, um ihn für den Stack zu verwenden. Geben Sie für SSM-Parameter, die in demselben gespeichert sind AWS-Konto, den Parameternamen ein. Geben Sie für SSM-Parameter, die von anderen gemeinsam genutzt werden AWS-Konto, den vollständigen Parameter-ARN ein. Weitere Informationen zu Systems Manager Manager-Parametern finden Sie unter Systems Manager Manager-Parameterspeicher und Arbeiten mit gemeinsam genutzten Parametern 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.

Beim Erstellen oder Aktualisieren von Stacks und beim Erstellen von Änderungssätzen werden die Werte AWS CloudFormation verwendet, die zum Zeitpunkt der Ausführung des Vorgangs im Parameterspeicher vorhanden waren. Wenn ein bestimmter Parameter im Parameter Store unter dem AWS Konto des Aufrufers nicht vorhanden ist, wird ein AWS CloudFormation Validierungsfehler zurückgegeben.

Wenn Sie einen Änderungssatz ausführen, AWS 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.

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 Secure Strings mithilfe des ssm-secure Musters als Parameterwerte angeben, AWS CloudFormation speichert den Secure String-Wert 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-Updates weisen die Option Vorhandenen Wert verwenden in der Konsole und das UsePreviousValue Attribut für darauf AWS CloudFormation hin, update-stackdass der vorhandene Systems Manager Manager-Parameterschlüssel verwendet werden soll — nicht dessen Wert. AWS CloudFormation ruft bei der Aktualisierung von Stacks immer die neuesten Werte aus dem Parameterspeicher ab.

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

  • AWS CloudFormation kann eine Validierung für Systems Manager Manager-Parameterschlüssel durchführen, jedoch nicht für ihre entsprechenden 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 den folgenden SSM Parametertyp nicht:

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

Unterstützt außerdem AWS CloudFormation nicht die Definition von Vorlagenparametern als SecureString Systems Manager 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 die AWS CloudFormation Konsole verwenden, um einen Stack zu erstellen oder zu aktualisieren, listet die Konsole die Eingabeparameter alphabetisch nach ihrer logischen ID auf. 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 NoEcho Eigenschaft ist auf gesetzt, um true zu verhindern, dass Describe-Stack-Aufrufe, z. B. der aws cloudformation describe-stacks AWS CLI Befehl, den Parameterwert zurückgeben. 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 stellen sicher, dass Eingabewerte für diese Typen existieren und korrekt sind, bevor Ressourcen AWS CloudFormation erstellt oder aktualisiert werden. Wenn Sie beispielsweise den Parametertyp AWS::EC2::KeyPair::KeyName verwenden, gleicht AWS CloudFormation den Eingabewert mit den vorhandenen Schlüsselpaar-Namen des Benutzers ab, bevor Ressourcen wie Amazon-EC2-Instances erstellt werden.

Wenn ein Benutzer den verwendet AWS Management Console, AWS CloudFormation füllt er AWS-spezifische Parametertypen vorab mit gültigen Werten aus. 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 die AWS CloudFormation API AWS CLI oder nicht verwenden, um eine Liste gültiger Werte für AWS-spezifische Parameter anzuzeigen. 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. Dabei wird vorausgesetzt, dass der myLatestAMI Parameter im Parameter Store unter dem Konto des Aufrufers AWS vorhanden ist.

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