Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verweisen Sie mit von CloudFormation -bereitgestellten Parametertypen auf vorhandene Ressourcen und Systems Manager Manager-Parameter
Beim Erstellen Ihrer Vorlage können Sie Parameter erstellen, bei denen Benutzer Kennungen vorhandener AWS Ressourcen oder Systems Manager Manager-Parameter eingeben müssen, indem Sie spezielle Parametertypen verwenden, die von CloudFormation bereitgestellt werden.
Themen
Übersicht
In können Sie Parameter verwenden CloudFormation, um Ihre Stapel anzupassen, indem Sie bei der Erstellung oder Aktualisierung des Stacks Eingabewerte angeben. Diese Funktion macht Ihre Vorlagen für verschiedene Szenarien wiederverwendbar und flexibel.
Parameter werden im Parameters
Abschnitt einer CloudFormation Vorlage definiert. Jeder Parameter hat einen Namen und einen Typ und kann zusätzliche Einstellungen wie einen Standardwert und zulässige Werte haben. Weitere Informationen finden Sie unter CloudFormation Vorlage Parameters Syntax.
Der Parametertyp bestimmt, welche Art von Eingabewert der Parameter akzeptieren kann. Akzeptiert beispielsweise Number
nur numerische Werte, String
akzeptiert aber Texteingaben.
CloudFormation stellt mehrere zusätzliche Parametertypen bereit, die Sie in Ihren Vorlagen verwenden können, um auf vorhandene AWS Ressourcen und Systems Manager Manager-Parameter zu verweisen.
Diese Parametertypen lassen sich in zwei Kategorien einteilen:
-
AWS-spezifische Parametertypen — CloudFormation stellt eine Reihe von Parametertypen bereit, mit deren Hilfe ungültige Werte beim Erstellen oder Aktualisieren eines Stacks erkannt werden können. Wenn Sie diese Parametertypen verwenden, muss jeder, der Ihre Vorlage verwendet, gültige Werte aus der AWS-Konto Region angeben, in der der Stack erstellt wird.
Wenn sie den verwenden AWS Management Console, CloudFormation wird eine vorausgefüllte Liste mit vorhandenen Werten aus ihrem Konto und ihrer Region bereitgestellt. Auf diese Weise muss sich der Benutzer nicht an einen bestimmten Namen oder eine ID erinnern und diese korrekt eingeben. Stattdessen wählen sie einfach Werte aus einer Drop-down-Liste aus. In einigen Fällen können sie sogar anhand der ID, des Namens oder des
Name
Tag-Werts nach Werten suchen. -
Systems Manager Manager-Parametertypen — stellt CloudFormation auch Parametertypen bereit, die vorhandenen Parametern im Systems Manager Manager-Parameterspeicher entsprechen. Wenn Sie diese Parametertypen verwenden, muss jeder, der Ihre Vorlage verwendet, einen Parameter Store-Schlüssel als Wert für den Systems Manager Manager-Parametertyp angeben und CloudFormation dann den neuesten Wert aus dem Parameter Store abrufen, um ihn in seinem Stack zu verwenden. Dies kann nützlich sein, wenn Sie Anwendungen häufig mit neuen Eigenschaftswerten aktualisieren müssen, z. B. dem neuen Amazon Machine Image (AMI)IDs. Informationen zum Parameterspeicher finden Sie unter Systems Manager Parameter Store.
Sobald Ihre Parameter in Parameters
diesem Abschnitt definiert sind, können Sie mithilfe der Ref
Funktion in der gesamten CloudFormation Vorlage auf Parameterwerte verweisen.
Beispiel
Das folgende Beispiel zeigt eine Vorlage, die die folgenden Parametertypen verwendet.
-
AWS::EC2::VPC::Id
-
AWS::EC2::Subnet::Id
-
AWS::EC2::KeyPair::KeyName
-
AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
Um einen Stack aus dieser Vorlage zu erstellen, müssen Sie eine bestehende VPC ID, Subnetz-ID und einen Schlüsselpaarnamen aus Ihrem Konto angeben. Sie können auch einen vorhandenen Parameter Store-Schlüssel angeben, der auf die gewünschte AMI ID verweist, oder den Standardwert von
beibehalten. Dieser öffentliche Parameter ist ein Alias für die regionale AMI ID für das neueste Amazon Linux AMI 2. Weitere Informationen zu öffentlichen Parametern finden Sie unter Discovering public parameters in Parameter Store im AWS Systems Manager Benutzerhandbuch./aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
JSON
{ "Parameters": { "VpcId": { "Description": "ID of an existing Virtual Private Cloud (VPC).", "Type": "AWS::EC2::VPC::Id" }, "PublicSubnetId": { "Description": "ID of an existing public subnet within the specified VPC.", "Type": "AWS::EC2::Subnet::Id" }, "KeyName": { "Description": "Name of an existing EC2 key pair to enable SSH access to the instance.", "Type": "AWS::EC2::KeyPair::KeyName" }, "AMIId": { "Description": "Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI).", "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>", "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" } }, "Resources": { "InstanceSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Enable SSH access via port 22", "VpcId": { "Ref": "VpcId" }, "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIp": "0.0.0.0/0" } ] } }, "Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "KeyName": { "Ref": "KeyName" }, "ImageId": { "Ref": "AMIId" }, "NetworkInterfaces": [ { "AssociatePublicIpAddress": "true", "DeviceIndex": "0", "SubnetId": { "Ref": "PublicSubnetId" }, "GroupSet": [{ "Ref": "InstanceSecurityGroup" }] } ] } } }, "Outputs": { "InstanceId": { "Value": { "Ref": "Ec2Instance" } } } }
YAML
Parameters: VpcId: Description: ID of an existing Virtual Private Cloud (VPC). Type: 'AWS::EC2::VPC::Id' PublicSubnetId: Description: ID of an existing public subnet within the specified VPC. Type: 'AWS::EC2::Subnet::Id' KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instance. Type: 'AWS::EC2::KeyPair::KeyName' AMIId: Description: Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI). Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' Resources: InstanceSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable SSH access via port 22 VpcId: !Ref VpcId SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 Ec2Instance: Type: 'AWS::EC2::Instance' Properties: KeyName: !Ref KeyName ImageId: !Ref AMIId NetworkInterfaces: - AssociatePublicIpAddress: "true" DeviceIndex: "0" SubnetId: !Ref PublicSubnetId GroupSet: - !Ref InstanceSecurityGroup Outputs: InstanceId: Value: !Ref Ec2Instance
AWS CLI Befehl zum Erstellen des Stacks
Das Folgende create-stackDer Befehl erstellt einen Stapel auf der Grundlage der Beispielvorlage.
aws cloudformation create-stack --stack-name
MyStack
\ --template-bodyfile://sampletemplate.json
\ --parameters \ ParameterKey="VpcId",ParameterValue="vpc-a123baa3
" \ ParameterKey="PublicSubnetId",ParameterValue="subnet-123a351e
" \ ParameterKey="KeyName",ParameterValue="MyKeyName
" \ ParameterKey="AMIId",ParameterValue="MyParameterKey
"
Um einen Parametertyp zu verwenden, der eine Liste von Zeichenfolgen akzeptiertList<AWS::EC2::Subnet::Id>
, müssen Sie die Kommas innerhalb von ParameterValue
mit einem doppelten Backslash maskieren, wie im folgenden Beispiel gezeigt.
--parameters ParameterKey="SubnetIDs",ParameterValue="
subnet-5ea0c127\\,subnet-6194ea3b\\,subnet-c87f2be0
"
Überlegungen
Es wird dringend empfohlen, dynamische Verweise zu verwenden, um den Zugriff auf vertrauliche Konfigurationsdefinitionen wie Anmeldeinformationen von Drittanbietern einzuschränken. Weitere Informationen finden Sie unter Ruft mithilfe dynamischer Verweise Werte ab, die in anderen Diensten gespeichert sind.
Wenn Sie Vorlagenbenutzern die Möglichkeit geben möchten, Werte aus verschiedenen Quellen anzugeben AWS-Konten, verwenden Sie keine AWS-spezifischen Parametertypen. Definieren Sie stattdessen Parameter vom Typ String
oderCommaDelimitedList
.
Bei den Systems Manager Manager-Parametertypen sind einige Dinge zu beachten:
-
Sie können die aufgelösten Parameterwerte auf der Registerkarte „Parameter“ des Stacks in der Konsole oder durch folgenden Befehl anzeigen describe-stacks oder describe-change-set. Denken Sie daran, dass diese Werte bei der Erstellung oder Aktualisierung des Stacks festgelegt werden, sodass sie sich möglicherweise von den neuesten Werten im Parameter Store unterscheiden.
-
Wenn Sie bei Stack-Aktualisierungen die Option Bestehenden Wert verwenden (oder
UsePreviousValue
auf true setzen) verwenden, bedeutet dies, dass Sie weiterhin denselben Parameter Store-Schlüssel verwenden möchten, nicht seinen Wert. CloudFormation ruft immer den neuesten Wert ab. -
Wenn Sie zulässige Werte oder andere Einschränkungen angeben, werden diese anhand der von Ihnen angegebenen Parameterschlüssel CloudFormation überprüft, nicht jedoch anhand ihrer Werte. Sie sollten die Werte im Parameter Store selbst validieren.
-
Wenn Sie Stacks erstellen oder aktualisieren und Änderungssätze erstellen, CloudFormation verwendet es den Wert, der zu diesem Zeitpunkt im Parameter Store vorhanden ist. Wenn ein angegebener Parameter nicht im Parameter Store unter dem des Aufrufers vorhanden ist AWS-Konto, wird ein Validierungsfehler CloudFormation zurückgegeben.
-
Wenn Sie einen Änderungssatz ausführen, CloudFormation verwendet die Werte, die im Änderungssatz angegeben sind. Sie sollten diese Werte vor der Ausführung des Änderungssatzes prüfen, da sie sich im Parameter Store zwischen dem Zeitpunkt, an dem der Änderungssatz erstellt wurde, und dem Zeitpunkt, an dem er ausgeführt wird, ändern können.
-
Für Parameter Store-Parameter, die in demselben gespeichert sind AWS-Konto, müssen Sie den Parameternamen angeben. Für Parameter Store-Parameter, die von anderen gemeinsam genutzt werden AWS-Konto, müssen Sie den vollständigen Parameter angebenARN.
Unterstützte AWS-spezifische Parametertypen
CloudFormation unterstützt die folgenden AWS-spezifischen Typen:
AWS::EC2::AvailabilityZone::Name
-
Gibt eine Availability Zone an (zum Beispiel
us-west-2a
). AWS::EC2::Image::Id
-
Eine EC2 Amazon-Image-ID, z.
ami-0ff8a91507f77f867
B. Beachten Sie, dass die CloudFormation Konsole keine Dropdownliste mit Werten für diesen Parametertyp anzeigt. AWS::EC2::Instance::Id
-
Eine EC2 Amazon-Instance-ID, z.
i-1e731a32
B. AWS::EC2::KeyPair::KeyName
-
Ein EC2 Amazon-Schlüsselpaarname.
AWS::EC2::SecurityGroup::GroupName
-
Ein Standardname für eine VPC Sicherheitsgruppe, z.
my-sg-abc
B. AWS::EC2::SecurityGroup::Id
-
Gibt die ID einer Sicherheitsgruppe an (zum Beispiel
sg-a123fd85
). AWS::EC2::Subnet::Id
-
Gibt eine Subnetz-ID an (zum Beispiel
subnet-123a351e
). AWS::EC2::Volume::Id
-
Eine EBS Amazon-Volume-ID, z.
vol-3cdd3f56
B. AWS::EC2::VPC::Id
-
Eine VPC ID, wie
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-BildernIDs, wie
ami-0ff8a91507f77f867, ami-0a584ac55a7631c0c
z. Beachten Sie, dass die CloudFormation Konsole keine Dropdownliste mit Werten für diesen Parametertyp anzeigt. List<AWS::EC2::Instance::Id>
-
Eine Reihe von EC2 Amazon-InstancesIDs, wie
i-1e731a32, i-1e731a34
z. List<AWS::EC2::SecurityGroup::GroupName>
-
Eine Reihe von Standardnamen für VPC Sicherheitsgruppen, wie
my-sg-abc, my-sg-def
z. List<AWS::EC2::SecurityGroup::Id>
-
Eine Reihe von SicherheitsgruppenIDs, z.
sg-a123fd85, sg-b456fd85
B. List<AWS::EC2::Subnet::Id>
-
Ein Array von SubnetzenIDs, z. B.
subnet-123a351e, subnet-456b351e
List<AWS::EC2::Volume::Id>
-
Eine Reihe von EBS Amazon-VolumenIDs, wie
vol-3cdd3f56, vol-4cdd3f56
z. List<AWS::EC2::VPC::Id>
-
Eine Reihe von VPCIDs, wie zum Beispiel
vpc-a123baa3, vpc-b456baa3
. List<AWS::Route53::HostedZone::Id>
-
Eine Reihe von von Amazon Route 53-gehosteten ZonenIDs, z.
Z23YXV4OVPL04A, Z23YXV4OVPL04B
B.
Unterstützte Systems Manager Manager-Parametertypen
CloudFormation unterstützt die folgenden Systems Manager Manager-Parametertypen:
AWS::SSM::Parameter::Name
-
Der Name eines Systems Manager-Parameterschlüssels. Verwenden Sie diesen Parametertyp nur, um zu überprüfen, ob ein erforderlicher Parameter vorhanden ist. CloudFormation ruft den tatsächlichen Wert, der dem Parameter zugeordnet ist, nicht ab.
AWS::SSM::Parameter::Value<String>
-
Ein Systems Manager-Parameter, dessen Wert eine Zeichenfolge ist. Dies entspricht dem Parametertyp
String
im Parameter Store. AWS::SSM::Parameter::Value<List<String>>
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 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.