Fn::ImportValue - 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.

Fn::ImportValue

Die intrinsische 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. 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-KontoExport Name muss innerhalb einer Region eindeutig sein.

  • Cross-Stack-Referenzen können nicht regionsübergreifend erstellt werden. Sie können die intrinsische Funktion Fn::ImportValue verwenden, um nur Werte zu importieren, die innerhalb derselben Region exportiert wurden.

  • Für Ausgaben kann der Wert der Name-Eigenschaft eines Export keine Ref- oder GetAtt-Funktionen verwenden, die von einer Ressource abhängen.

    Ebenso darf die ImportValue-Funktion keine Ref- oder GetAtt-Funktionen enthalten, die von einer Ressource abhängen.

  • Sie können einen Stack nicht löschen, wenn ein anderer Stack auf eine seiner Ausgaben verweist.

  • Sie können einen Ausgabewert, auf den ein anderer Stack verweist, nicht ändern oder entfernen.

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:

!ImportValue sharedValueToImport
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"

Parameter

sharedValueToImportieren

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