Dies ist das neue CloudFormation Template Reference Guide. Bitte aktualisieren Sie Ihre Lesezeichen und Links. Hilfe zu den ersten CloudFormation Schritten finden Sie im AWS CloudFormation Benutzerhandbuch.
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.
Lüfter:: ImportValue
Die systeminterne Funktion Fn::ImportValue gibt den Wert einer Ausgabe zurück, die von einem anderen Stack exportiert wurde. Normalerweise verwenden Sie diese Funktion zum Erstellen von Cross-Stack-Referenzen. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Informationen zu Ressourcenausgaben in einem anderen CloudFormation Stack im AWS CloudFormation Benutzerhandbuch.
Tipp
Wenn Sie auf Stack-Ausgaben aus verschiedenen AWS Konten oder Regionen verweisen möchten, ohne dass explizite Exporte erforderlich sind, verwenden Sie Fn::GetStackOutput. Fn::GetStackOutputerstellt eine schwache Referenz, die bei der Erstellung oder Aktualisierung des Stacks behoben wird und für den referenzierten Stack keine Deklaration einer erforderlich istExport.
Im folgenden Beispiel eines Vorlagenausschnitts exportiert Stack A die VPC-Sicherheitsgruppenwerte, die von Stack B importiert werden.
Anmerkung
Die folgenden Einschränkungen gelten für Cross-Stack-Referenzen:
-
Jeder AWS-Konto
ExportName muss innerhalb einer Region eindeutig sein. -
Bei Verwendung von
ExportundFn::ImportValuesind stapelübergreifende Verweise auf dasselbe Konto und dieselbe Region beschränkt. VerwendenFn::GetStackOutputSie, um konto- oder regionsübergreifende Stack-Ausgaben zu referenzieren. -
Für Ausgaben kann der Wert der
Name-Eigenschaft einesExportkeineRef- oderGetAtt-Funktionen verwenden, die von einer Ressource abhängen.Ebenso darf die
ImportValue-Funktion keineRef- oderGetAtt-Funktionen enthalten, die von einer Ressource abhängen. -
Nachdem ein anderer Stack einen Ausgabewert importiert hat, können Sie den Stack, der den Ausgabewert exportiert, nicht löschen oder den exportierten Ausgabewert ändern. Alle Importe müssen entfernt werden, bevor Sie den exportierenden Stack löschen oder den Ausgabewert ändern können.
JSON
Stack A – Export
"Outputs" : { "PublicSubnet" : { "Description" : "The subnet ID to use for public web servers", "Value" : { "Ref" : "PublicSubnet" }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-SubnetID" }} }, "WebServerSecurityGroup" : { "Description" : "The security group ID to use for public web servers", "Value" : { "Fn::GetAtt" : ["WebServerSecurityGroup", "GroupId"] }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-SecurityGroupID" }} } }
YAML
Stack A – Export
Outputs: PublicSubnet: Description: The subnet ID to use for public web servers Value: Ref: PublicSubnet Export: Name: 'Fn::Sub': '${AWS::StackName}-SubnetID' WebServerSecurityGroup: Description: The security group ID to use for public web servers Value: 'Fn::GetAtt': - WebServerSecurityGroup - GroupId Export: Name: 'Fn::Sub': '${AWS::StackName}-SecurityGroupID'
JSON
Stack B – Import
"Resources" : { "WebServerInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : "t2.micro", "ImageId" : "ami-a1b23456", "NetworkInterfaces" : [{ "GroupSet" : [{"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStackNameParameter}-SecurityGroupID"}}], "AssociatePublicIpAddress" : "true", "DeviceIndex" : "0", "DeleteOnTermination" : "true", "SubnetId" : {"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStackNameParameter}-SubnetID"}} }] } } }
YAML
Stack B – Import
Resources: WebServerInstance: Type: AWS::EC2::Instance Properties: InstanceType: t2.micro ImageId: ami-a1b23456 NetworkInterfaces: - GroupSet: - Fn::ImportValue: 'Fn::Sub': '${NetworkStackNameParameter}-SecurityGroupID' AssociatePublicIpAddress: 'true' DeviceIndex: '0' DeleteOnTermination: 'true' SubnetId: Fn::ImportValue: 'Fn::Sub': '${NetworkStackNameParameter}-SubnetID'
Deklaration
JSON
{ "Fn::ImportValue" :sharedValueToImport}
YAML
Sie können den vollständigen Funktionsnamen verwenden:
Fn::ImportValue:sharedValueToImport
Alternativ können Sie auch die Kurzform verwenden:
!ImportValuesharedValueToImport
Wichtig
Sie können die Kurzform von !ImportValue nicht verwenden, wenn es die Kurzform von !Sub enthält.
# do not use !ImportValue !Sub '${NetworkStack}-SubnetID'
Stattdessen müssen Sie den vollständigen Funktionsnamen verwenden, zum Beispiel:
Fn::ImportValue: !Sub "${NetworkStack}-SubnetID"
Parameters
- gemeinsam genutzt ValueToImport
-
Der Stack-Ausgabewert, den Sie importieren möchten.
Rückgabewert
Der Stack-Ausgabewert.
Beispiel
JSON
{ "Fn::ImportValue" : {"Fn::Sub": "${NetworkStackNameParameter}-SubnetID" } }
YAML
Fn::ImportValue: !Sub "${NetworkStackName}-SecurityGroupID"
Unterstützte Funktionen
Sie können die folgenden Funktionen in der Fn::ImportValue-Funktion verwenden. Der Wert dieser Funktionen darf nicht von einer Ressource abhängen.
-
Fn::Base64 -
Fn::FindInMap -
Fn::If -
Fn::Join -
Fn::Select -
Fn::Sub -
Ref