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. In den folgenden Beispielvorlagen exportiert Stack A VPC Sicherheitsgruppenwerte und Stack B importiert sie.

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.

  • 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:

!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