

Questa è la nuova *Guida di riferimento ai modelli CloudFormation *. Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la [Guida AWS CloudFormation per l'utente](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# `Fn::ImportValue`
<a name="intrinsic-function-reference-importvalue"></a>

La funzione intrinseca `Fn::ImportValue` restituisce il valore di un output esportato da un altro stack. In genere è possibile utilizzare questa funzione per creare riferimenti tra stack. *Per ulteriori informazioni, consultate [Procedura dettagliata: fate riferimento agli output di risorse in un altro stack nella](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-crossstackref.html) Guida per l'utente. CloudFormation AWS CloudFormation *

Nei frammenti di modello di esempio seguenti Stack A esporta i valori del gruppo di sicurezza VPC e Stack B li importa.

**Nota**  
Ai riferimenti tra stack si applicano le seguenti limitazioni:  
Per ognuna di esse Account AWS, `Export` i nomi devono essere univoci all'interno di una regione.
Non puoi creare riferimenti tra stack tra Regioni. Puoi utilizzare la funzione intrinseca `Fn::ImportValue` per importare solo valori che sono stati esportati all’interno della stessa Regione.
Per gli output, il valore della proprietà `Name` di un `Export` non può utilizzare le funzioni `Ref` o `GetAtt` che dipendono da una risorsa.  
Allo stesso modo, la funzione `ImportValue` non può includere le funzioni `Ref` o `GetAtt` che dipendono da una risorsa.
Quando un altro stack importa un valore di output, non puoi eliminare lo stack che esporta il valore di output o modificare il valore di output esportato. Tutte le importazioni devono essere eliminate prima di poter eliminare lo stack di esportazione o di modificare il valore di output.

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

Esportazione di Stack 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>

Esportazione di Stack 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>

Importazione di Stack 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>

Importazione di Stack 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'
```

## Dichiarazione
<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>

È possibile utilizzare il nome completo della funzione:

```
Fn::ImportValue: sharedValueToImport
```

In alternativa, si può utilizzare il formato breve:

```
!ImportValue sharedValueToImport
```

**Importante**  
Non è possibile utilizzare il formato breve di `!ImportValue` se contiene il formato breve di `!Sub`.   

```
# do not use
!ImportValue
  !Sub '${NetworkStack}-SubnetID'
```
È necessario utilizzare il nome di funzione completo, ad esempio:  

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

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

sharedValueToImporta  
Il valore di output dello stack che si desidera importare.

## Valore restituito
<a name="w2aac24c43c15"></a>

Il valore di output dello stack.

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

## Funzioni supportate
<a name="w2aac24c43c19"></a>

È possibile utilizzare le funzioni seguenti nella funzione `Fn::ImportValue`. Il valore di queste funzioni non può dipendere da una risorsa.
+ `Fn::Base64`
+ `Fn::FindInMap`
+ `Fn::If`
+ `Fn::Join`
+ `Fn::Select`
+ `Fn::Sub`
+ `Ref`