

Il s’agit du nouveau *Guide de référence des modèles CloudFormation *. Veuillez mettre à jour vos favoris et vos liens. Pour obtenir de l'aide pour démarrer CloudFormation, consultez le [guide de AWS CloudFormation l'utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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`
<a name="intrinsic-function-reference-importvalue"></a>

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. Pour plus d'informations, voir [Procédure pas à pas : reportez-vous aux sorties de ressources d'une autre CloudFormation pile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-crossstackref.html) dans le *Guide de l'AWS CloudFormation utilisateur*.

Dans les extraits des exemples de modèles suivants, la pile A exporte les valeurs du groupe de sécurité VPC 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
<a name="intrinsic-function-reference-importvalue-export.json"></a>

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
<a name="intrinsic-function-reference-importvalue-export.yaml"></a>

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
<a name="intrinsic-function-reference-importvalue-import.json"></a>

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
<a name="intrinsic-function-reference-importvalue-import.yaml"></a>

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
<a name="w2aac24c43c11"></a>

### JSON
<a name="intrinsic-function-reference-importvalue-syntax.json"></a>

```
{ "Fn::ImportValue" : sharedValueToImport }
```

### YAML
<a name="intrinsic-function-reference-importvalue-syntax.yaml"></a>

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"
```

## Parameters
<a name="w2aac24c43c13"></a>

sharedValueToImporter  
Valeur de sortie de pile à importer.

## Valeur renvoyée
<a name="w2aac24c43c15"></a>

Valeur de sortie de pile.

## Exemple
<a name="w2aac24c43c17"></a>

### JSON
<a name="intrinsic-function-reference-importvalue-example.json"></a>

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

### YAML
<a name="intrinsic-function-reference-importvalue-example.yaml"></a>

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

## Fonctions prises en charge
<a name="w2aac24c43c19"></a>

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`