

# Consulta de las salidas de recursos en otra pila de CloudFormation
<a name="walkthrough-crossstackref"></a>

En este tutorial, se muestra cómo hacer referencia a los resultados de una pila de CloudFormation dentro de otra pila para crear plantillas más modulares y reutilizables. 

En lugar de incluir todos los recursos en una sola pila, debe crear recursos de AWS en pilas independientes. A continuación, puede consultar salidas de recursos necesarios de otras pilas. Al restringir referencias de pila cruzadas a salidas, usted controla las partes de una pila referenciadas por otras pilas.

Por ejemplo, podría tener una pila de red con una VPC, un grupo de seguridad, y una subred para aplicaciones web públicas y una pila de aplicaciones web públicas independientes. Para garantizar que las aplicaciones web utilicen el grupo de seguridad y la subred de la pila de la red, debe crear una referencia de pila cruzada que permita a la pila de aplicaciones web hacer referencia a resultados de recursos desde la pila de red. Con una referencia de pila cruzada, los propietarios de las pilas de aplicaciones web no necesitan crear ni mantener reglas de red o activos.

Para crear una referencia de pila cruzada, utilice el campo de campo de salida `Export` para marcar el valor de la salida de un recurso para exportar. A continuación, utilice la función intrínseca `Fn::ImportValue` para importar el valor. Para obtener más información, consulte [Obtención de salidas exportadas de una pila implementada de CloudFormation](using-cfn-stack-exports.md).

**nota**  
CloudFormation es un servicio gratuito. Sin embargo, se le cobrará por los recursos de AWS que incluya en sus pilas a la tarifa actual para cada una. Para obtener más información sobre los precios de AWS, consulte [la página de detalles de cada producto](https://aws.amazon.com/).

**Topics**
+ [Uso de una plantilla de ejemplo para crear una pila de red](#walkthrough-crossstackref-create-vpc-stack)
+ [Uso de una plantilla de ejemplo para crear una pila de aplicaciones web](#walkthrough-crossstackref-create-ec2-stack)
+ [Verificación de que la pila funcione según lo esperado](#walkthrough-crossstackref-verify)
+ [Solución de problemas de asignación de AMI](#walkthrough-crossstackref-troubleshooting-ami)
+ [Eliminación de sus recursos](#walkthrough-crossstackref-clean-up)

## Uso de una plantilla de ejemplo para crear una pila de red
<a name="walkthrough-crossstackref-create-vpc-stack"></a>

Antes de empezar este tutorial, compruebe que tiene permisos de IAM para utilizar todos los siguientes servicios: Amazon VPC, Amazon EC2 y CloudFormation.

La pila de red contiene la VPC, el grupo de seguridad y la subred que utilizará en la pila de aplicaciones web. Además de estos recursos, la pila de red crea una gateway de Internet y las tablas de ruteo para permitir el acceso público.

Debe crear esta pila antes de crear la pila de aplicaciones web. Si crea la pila de aplicaciones web primero, no tendrá un grupo de seguridad ni una subred.

La plantilla de pila está disponible a través de la siguiente URL: [https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template](https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template). Para ver los recursos que creará la pila, elija el enlace, que abre la plantilla. En la sección `Outputs`, puede ver los recursos de red que la plantilla de ejemplo exporta. Los nombres de los recursos exportados están prefijados con el nombre de la pila en caso de que se exporten recursos de red de otras pilas. Cuando los usuarios importan recursos de red, pueden especificar de qué pilas se importan los recursos.

**Para crear la pila de la red**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En la página **Pilas**, elija **Crear pila** en la parte superior derecha y, a continuación, elija **Con recursos nuevos (estándar)**.

1. Elija **Seleccione una plantilla existente** y, en la sección **Especificar plantilla**, seleccione **Amazon S3 URL**.

1. En **Amazon S3 URL**, pegue la siguiente URL: **https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template**.

1. Elija **Siguiente**.

1. En **Stack name (Nombre de pila)**, escriba **SampleNetworkCrossStack** y, a continuación, elija **Next (Siguiente)**.
**nota**  
Registre el nombre de esta pila. Necesitará el nombre de la pila al lanzar la pila de aplicaciones web.

1. Elija **Siguiente**. Para este tutorial, no tiene que añadir etiquetas ni especificar una configuración avanzada.

1. Asegúrese de que el nombre de la pila y la URL de la plantilla sean correctos y elija **Create stack (Crear pila)**.

   CloudFormation puede tardar varios minutos en crear la pila. Espere hasta que todos los recursos se hayan creado correctamente antes de proceder a crear la pila de aplicaciones web.

1. Para monitorizar el progreso, vea los eventos de la pila. Para obtener más información, consulte [Monitorizar el progreso de la pila](monitor-stack-progress.md).

## Uso de una plantilla de ejemplo para crear una pila de aplicaciones web
<a name="walkthrough-crossstackref-create-ec2-stack"></a>

La pila de aplicaciones web crea una instancia de EC2 que utiliza el grupo de seguridad y la subred desde la pila de la red. 

Debe crear esta pila en la misma Región de AWS que la pila de la red.

La plantilla de pila está disponible a través de la siguiente URL: [https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template](https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template). Para ver los recursos que creará la pila, elija el enlace, que abrirá la plantilla. En la sección `Resources`, vea las propiedades de la instancia de EC2. Puede ver cómo se importan los recursos de red de otra pila usando la función `Fn::ImportValue`.

**Para crear la pila de aplicaciones web**

1. En la página **Pilas**, seleccione **Crear pila** en la parte superior derecha y, a continuación, seleccione **Con recursos nuevos (estándar)**.

1. Elija **Seleccione una plantilla existente** y, en la sección **Especificar plantilla**, seleccione **Amazon S3 URL**.

1. En **Amazon S3 URL**, pegue la siguiente URL: **https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template**.

1. Elija **Siguiente**.

1. Para **Stack name (Nombre de pila)**, escriba **SampleWebAppCrossStack**. En la sección **Parameters (Parámetros)**, utilice el valor predeterminado para el parámetro **NetworkStackName** y, a continuación, elija **Next (Siguiente)**.

   La plantilla de ejemplo utiliza el valor del parámetro para especificar en cada pila para importar valores.

1. Elija **Siguiente**. Para este tutorial, no tiene que añadir etiquetas ni especificar una configuración avanzada.

1. Asegúrese de que el nombre de la pila y la URL de la plantilla sean correctos y elija **Create stack (Crear pila)**.

   CloudFormation puede tardar varios minutos en crear la pila.

## Verificación de que la pila funcione según lo esperado
<a name="walkthrough-crossstackref-verify"></a>

Después de haber creado la pila, vea sus recursos y tenga en cuenta el ID de instancia. Para obtener más información acerca de la visualización de recursos de la pila, consulte [Visualización de la información de la pila desde la consola de CloudFormation](cfn-console-view-stack-data-resources.md).

Para verificar la subred y el grupo de seguridad de la instancia, vea las propiedades de la instancia en la [consola de Amazon EC2](https://console.aws.amazon.com/ec2/). Si la instancia utiliza el grupo de seguridad y la subred en la pila `SampleNetworkCrossStack`, se ha creado correctamente una referencia de pila cruzada.

Utilice la consola para ver los resultados de pila y la URL del sitio web de ejemplo para comprobar que se ejecuta la aplicación web. Para obtener más información, consulte [Visualización de la información de la pila desde la consola de CloudFormation](cfn-console-view-stack-data-resources.md).

## Solución de problemas de asignación de AMI
<a name="walkthrough-crossstackref-troubleshooting-ami"></a>

Si recibe el error `Template error: Unable to get mapping for AWSRegionArch2AMI::[region]::HVM64`, la plantilla no incluye ninguna asignación de AMI para su Región de AWS. En lugar de actualizar la asignación, recomendamos utilizar los parámetros públicos de Systems Manager para hacer referencia a las AMI más recientes de forma dinámica:

1. Descargue la plantilla `SampleWebAppCrossStack` en su máquina local desde [https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template](https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template).

1. Elimine toda la sección de asignación de `AWSRegionArch2AMI`.

1. Agregue el siguiente parámetro de Systems Manager:

   ```
   "LatestAmiId": {
     "Description": "The latest Amazon Linux 2 AMI from the Parameter Store",
       "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>",
       "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2"
     }
   ```

1. Reemplace la referencia a `ImageId` existente:

   ```
   "ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" } , "HVM64" ] }, 
   ```

   Por:

   ```
   "ImageId": { "Ref": "LatestAmiId" },
   ```

   Este parámetro se resuelve automáticamente en la AMI de Amazon Linux 2 más reciente para la región donde se implementa la pila. 

   Para otras distribuciones de Linux, utilice la ruta de parámetros apropiada. Para obtener más información, consulte [Descubrir parámetros públicos en Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-finding-public-parameters.html) en la *Guía del usuario de AWS Systems Manager*.

1. Cargue la plantilla modificada en un bucket de Amazon S3 de su cuenta:

   ```
   aws s3 cp SampleWebAppCrossStack.template s3://amzn-s3-demo-bucket/
   ```

1. Al crear la pila, especifique la URL de la plantilla de S3 en lugar de la URL de ejemplo.

## Eliminación de sus recursos
<a name="walkthrough-crossstackref-clean-up"></a>

Para asegurarse de que no se le cobra por servicios no deseados, elimine las pilas.

**Para eliminar las pilas**

1. En la consola de CloudFormation, seleccione la pila `SampleWebAppCrossStack`.

1. Elija **Actions (Acciones)** y, a continuación, elija **Delete Stack (Eliminar pila)**.

1. En el mensaje de confirmación, elija **Delete (Eliminar)**.

1. Una vez que se haya eliminado la pila, repita los mismos pasos con la pila `SampleNetworkCrossStack`.
**nota**  
Espere hasta que CloudFormation elimine por completo la pila `SampleWebAppCrossStack`. Si la instancia de EC2 sigue ejecutándose en la VPC, CloudFormation no eliminará la VPC en la pila `SampleNetworkCrossStack`.