Fn::ImportValue - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fn::ImportValue

La fonction intrinsèque Fn::ImportValue renvoie la valeur d'une sortie exportée par une autre pile. Cette fonction est généralement utilisée pour créer des références entre piles. Dans les exemples d'extraits de modèle suivants, la pile A exporte les valeurs des groupes VPC de sécurité et la pile B les importe.

Note

Les restrictions suivantes s'appliquent aux références entre piles :

  • Pour chacun Compte AWS, les Export noms doivent être uniques au sein d'une région.

  • Il n’est pas possible de créer des références entre piles entre différentes régions. Vous pouvez utiliser la fonction intrinsèque Fn::ImportValue pour importer uniquement les valeurs qui ont été exportées dans la même région.

  • Pour les sorties, la valeur de la propriété Name d'un Export ne peut pas utiliser de fonctions Ref ou GetAtt qui dépendent d'une ressource.

    De même, la fonction ImportValue ne peut pas inclure de fonctions Ref ou GetAtt qui dépendent d'une ressource.

  • Lorsqu'une autre pile importe une valeur de sortie, vous ne peut pas supprimer la pile qui exporte la valeur de sortie ou modifier la valeur de sortie exportée. Toutes les importations doivent être supprimées avant de pouvoir supprimer la pile d'exportation ou modifier la valeur de sortie.

JSON

Exportation de la pile A

"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

Exportation de la pile A

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

Importation de la pile B

"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

Importation de la pile B

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'

Déclaration

JSON

{ "Fn::ImportValue" : sharedValueToImport }

YAML

Vous pouvez utiliser le nom complet de la fonction :

Fn::ImportValue: sharedValueToImport

Vous pouvez également utiliser la forme courte :

!ImportValue sharedValueToImport
Important

Vous ne pouvez pas utiliser la forme courte de !ImportValue quand elle contient une forme courte de !Sub.

# do not use !ImportValue !Sub '${NetworkStack}-SubnetID'

Vous devez plutôt indiquer le nom complet de la fonction, par exemple :

Fn::ImportValue: !Sub "${NetworkStack}-SubnetID"

Paramètres

sharedValueToImporter

Valeur de sortie de pile à importer.

Valeur renvoyée

Valeur de sortie de pile.

Exemple

JSON

{ "Fn::ImportValue" : {"Fn::Sub": "${NetworkStackNameParameter}-SubnetID" } }

YAML

Fn::ImportValue: !Sub "${NetworkStackName}-SecurityGroupID"

Fonctions prises en charge

Vous pouvez utiliser les fonctions suivantes dans la fonction Fn::ImportValue. La valeur de ces fonctions ne peut pas dépendre d'une ressource.

  • Fn::Base64

  • Fn::FindInMap

  • Fn::If

  • Fn::Join

  • Fn::Select

  • Fn::Sub

  • Ref