

# Obtención de salidas exportadas de una pila implementada de CloudFormation
<a name="using-cfn-stack-exports"></a>

Si tiene varias pilas en la misma Cuenta de AWS y región, es posible que desee compartir información entre ellas. Esto resulta útil cuando una pila necesita usar recursos creados por otra pila.

Por ejemplo, puede tener una pila que cree recursos de red, como subredes y grupos de seguridad, para sus servidores web. Luego, otras pilas que crean los servidores web reales pueden utilizar los recursos de red creados por la primera pila. No es necesario codificar de forma rígida los IDs de recursos en la plantilla de la pila ni pasar los IDs como parámetros de entrada.

Para compartir información entre pilas, *exporta* los valores de salida de una pila y los *importa* a otra pila. Así es como funciona:

1. En la plantilla de la primera pila (p. ej., la pila de redes), se definen determinados valores para la exportación mediante el campo `Export` de la sección `Outputs`. Para obtener más información, consulte [Sintaxis de Outputs de la plantilla de CloudFormation](outputs-section-structure.md).

1. Al crear o actualizar esa pila, CloudFormation exporta los valores de salida y los pone a disposición de otras pilas de la misma Cuenta de AWS y región.

1. En la plantilla de la otra pila, se utiliza la función [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-importvalue.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-importvalue.html) para importar los valores exportados de la primera pila.

1. Al crear o actualizar la segunda pila (p. ej., la pila del servidor web), CloudFormation recupera automáticamente los valores exportados de la primera pila y los utiliza.

Para obtener un tutorial y plantillas de ejemplo, consulte [Consulta de las salidas de recursos en otra pila de CloudFormation](walkthrough-crossstackref.md).

## Exportación de valores de salida de pilas en comparación con el uso de pilas anidadas
<a name="output-vs-nested"></a>

Una pila anidada es un pila que crea en otra pila con el recurso `AWS::CloudFormation::Stack`. Con pilas anidadas, se implementan y administran todos los recursos desde una sola pila. Se pueden usar salidas desde una pila en el grupo de pilas anidadas como entradas a otra pila del grupo. Esto difiere de la exportación de valores.

Si desea que solo se intercambie información dentro de un grupo de pilas anidadas, le sugerimos que utilice pilas anidadas. Para compartir información con otras pilas (no solo dentro del grupo de pilas anidadas), exporte valores. Por ejemplo, puede crear una sola pila con una subred y, a continuación, exportar su ID. Otras pilas pueden utilizar dicha subred importando su ID. Cada pila no tiene por qué crear su propia subred. Mientras las pilas importen el ID de la subred, no se puede cambiar ni eliminar.

Para obtener más información sobre las pilas anidadas, consulte [División de una plantilla en piezas reutilizables utilizando pilas anidadas](using-cfn-nested-stacks.md).

## Consideraciones
<a name="using-cfn-stack-exports-considerations"></a>

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.

## Listado de valores de salida exportados
<a name="using-cfn-stack-exports-listing"></a>

Si necesita ver los valores de las salidas exportadas de sus pilas, utilice uno de los siguientes métodos:

**Para obtener una lista de valores de salida exportados (consola)**

1. Abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS.

1. En el panel de navegación izquierdo, seleccione **Exportaciones**.

**Para obtener una lista de los valores de salida exportados (AWS CLI)**  
Use el siguiente comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-exports.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-exports.html). Sustituya *us-east-1* por su Región de AWS.

```
aws cloudformation list-exports --region us-east-1
```

A continuación, se muestra un ejemplo del resultado.

```
{
    "Exports": [
        {
            "ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800",
            "Name": "private-vpc-subnet-a",
            "Value": "subnet-07b410xmplddcfa03"
        },
        {
            "ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800",
            "Name": "private-vpc-subnet-b",
            "Value": "subnet-075ed3xmplebd2fb1"
        },
        {
            "ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800",
            "Name": "private-vpc-vpcid",
            "Value": "vpc-011d7xmpl100e9841"
        }
    ]
}
```

CloudFormation muestra los nombres y los valores de las salidas exportadas para la región actual y la pila desde la que se esperaban. Para usar un valor de salida exportado en otra plantilla de pila, puede referenciarla con el nombre de exportación y la función `Fn::ImportValue`.

## Enumeración de pilas que importan un valor de salida exportado
<a name="using-cfn-stack-imports"></a>

Para eliminar o cambiar los valores de salida exportados, primero debe averiguar qué pilas los importan.

Para ver las pilas que importan un valor de salida exportado, utilice uno de los siguientes métodos:

**Enumeración de pilas que importan un valor de salida exportado (consola)**

1. Abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En el panel de navegación izquierdo, seleccione **Exportaciones**.

1. Para ver qué pilas importan un valor de exportación determinado, elija **Export Name** (Nombre de la exportación) para ese valor de exportación. CloudFormation muestra la página de detalles de exportación, que enumera todas las pilas que están importando el valor.

**Para obtener una lista de pilas que importan un valor de salida exportado (AWS CLI)**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-imports.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-imports.html). Sustituya *us-east-1* por su Región de AWS y `private-vpc-vpcid` por el nombre del valor de salida exportado.

```
aws cloudformation list-imports --region us-east-1 \
    --export-name private-vpc-vpcid
```

CloudFormation devuelve una lista de pilas que están importando el valor.

```
{
    "Imports": [
        "my-app-stack"
    ]
}
```

Una vez que sepa qué pilas importan un valor exportado en particular, debe modificar esas pilas para eliminar las funciones `Fn::ImportValue` que refieren a los valores de salida. Debe eliminar todas las importaciones que hacen referencia a valores de salida exportados antes de poder eliminar o modificar los valores de salida exportados. 