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'unExport
ne peut pas utiliser de fonctionsRef
ouGetAtt
qui dépendent d'une ressource.De même, la fonction
ImportValue
ne peut pas inclure de fonctionsRef
ouGetAtt
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