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
undOutputs
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
-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
-
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 auftrue
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 oder überarbeitet keine Informationen, die Sie imMetadata
-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 Anstatt vertrauliche Informationen direkt in Ihre CloudFormation-Vorlagen einzubetten, sollten Sie dynamische Parameter in der Stack-Vorlage verwenden, um auf vertrauliche Informationen zu verweisen, die außerhalb von CloudFormation gespeichert und verwaltet werden, z. B. im AWS-Systems-Manager-Parameterspeicher oder AWS Secrets Manager.
Weitere Informationen finden Sie in den bewährten Methoden zu Keine Anmeldeinformationen in Ihre Vorlagen einbetten.
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-Kennung bildet, kann CloudFormation den tatsächlichen Klartext-Wert in der primären Ressourcen-Kennung verwenden. 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
).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 Parameterspeicher 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-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: 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 Parameterspeicher ab, der für den Stack verwendet werden soll. Weitere Informationen zu Systems-Manager-Parametern finden Sie unter Systems-Manager-Parameterspeicher im Benutzerhandbuch für AWS Systems Manager.
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.
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 verwenden) in der Konsole und das Attribut
UsePreviousValue
fürupdate-stack
AWS CloudFormation an, den vorhandenen Systems-Manager-Parameterschlüssel zu verwenden – nicht dessen Wert. AWS CloudFormation holt immer die neuesten Werte aus dem Parameterspeicher, wenn es Stacks aktualisiert.Wenn Sie jedoch das dynamische Parametermuster
ssm
oderssm-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-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>>
oderAWS::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 Vorlagen-Parametern 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üsselpaar-Namen 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