

Esta es la nueva *Guía de referencia de plantillas de CloudFormation*. Actualice sus marcadores y enlaces. Para obtener ayuda sobre cómo empezar a usar CloudFormation, consulte la [Guía del usuario de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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

La función intrínseca `Fn::ImportValue` devuelve el valor de una salida exportada por otra pila. Esta función se suele utilizar para crear referencias cruzadas entre pilas. Para obtener más información, consulte [Walkthrough: Refer to resource outputs in another CloudFormation stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-crossstackref.html) en la *Guía del usuario de AWS CloudFormation*.

En los siguientes fragmentos de código de plantillas de ejemplo, la Pila A exporta valores del grupo de seguridad de la VPC y la Pila B los importa.

**nota**  
Las siguientes restricciones se aplican a las referencias cruzadas entre pilas:  
Para cada Cuenta de AWS, los nombres `Export` deben ser únicos dentro de una región.
No puede crear referencias cruzadas entre regiones. Puede utilizar la función intrínseca `Fn::ImportValue` para importar solo valores que se hayan exportado dentro de la misma región.
Para las salidas, el valor de la propiedad `Name` de un `Export` no puede usar las funciones `Ref` o `GetAtt` que dependen de un recurso.  
Del mismo modo, la función `ImportValue` no puede incluir funciones `Ref` o `GetAtt` que dependen de un recurso.
Después de que otra pila importe un valor de salida, no se puede eliminar la pila que exporta el valor de salida ni modificar el valor de salida exportado. Todas las importaciones deben eliminarse antes de poder eliminar la pila de exportación o modificar el valor de salida.

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

Exportación de la pila 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>

Exportación de la pila 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>

Importación de la Pila 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>

Importación de la Pila 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'
```

## Declaración
<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>

Puede utilizar el nombre de la función completa:

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

También puede utilizar la forma abreviada:

```
!ImportValue sharedValueToImport
```

**importante**  
No se puede utilizar la forma abreviada de `!ImportValue` cuando contiene la forma abreviada de `!Sub`.   

```
# do not use
!ImportValue
  !Sub '${NetworkStack}-SubnetID'
```
En lugar de ello, debe utilizar el nombre de la función completa, por ejemplo:  

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

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

sharedValueToImport  
El valor de salida de la pila que desea importar.

## Valor devuelto
<a name="w2aac24c43c15"></a>

El valor de salida de la pila.

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

## Funciones compatibles
<a name="w2aac24c43c19"></a>

Puede utilizar las siguientes funciones en la función `Fn::ImportValue`. El valor de estas funciones no puede depender de un recurso.
+ `Fn::Base64`
+ `Fn::FindInMap`
+ `Fn::If`
+ `Fn::Join`
+ `Fn::Select`
+ `Fn::Sub`
+ `Ref`