Tutorial: Consulte las salidas de recursos en otra pila de AWS CloudFormation - AWS CloudFormation

Tutorial: Consulte las salidas de recursos en otra pila de AWS CloudFormation

Para exportar los recursos de una pila AWS CloudFormation a otro, cree una referencia de pila cruzada. Las referencias de pila cruzadas permiten usar una arquitectura orientada a servicios o en capas. 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 Salidas y Fn::ImportValue.

Requisitos previos

Antes de empezar este tutorial, compruebe que tiene permisos de AWS Identity and Access Management (IAM) para utilizar todos los siguientes servicios: Amazon VPC, Amazon EC2 y AWS CloudFormation.

nota

AWS 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.

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.

  • No puede eliminar una pila si otra pila hace referencia a una de sus salidas.

  • No puede modificar ni eliminar un valor de salida al que haga referencia otra pila.

Paso 1: Utilice una plantilla de ejemplo para crear una pila de red

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.

nota

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.

Para crear la pila de la red
  1. Abra la consola de AWS CloudFormation y elija Create Stack (Crear pila).

  2. Elija Template is ready (La plantilla está lista) y en la sección Specify template (Especificar plantilla), seleccione Amazon S3 URL (URL de Amazon S3). Copie y pegue la siguiente URL en el cuadro de texto: https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template

    El enlace proporciona la ubicación de la plantilla de pila de red. Para ver los recursos que creará la pila, elija el enlace, que abre la plantilla. En la sección de salidas, 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.

  3. Tras revisar la plantilla, elija Next (Siguiente).

  4. 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.

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

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

    Podría llevarle varios minutos a AWS CloudFormation crear la pila. Espere hasta que todos los recursos se hayan creado correctamente antes de proceder a crear la pila de aplicaciones web.

  7. Para monitorizar el progreso, vea los eventos de la pila. Para obtener más información, consulte Visualización de recursos y datos de la pila de AWS CloudFormation en la AWS Management Console.

Paso 2: Utilice una plantilla de ejemplo para crear una pila de aplicaciones web

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.

nota

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

Para crear la pila de aplicaciones web
  1. Abra la consola de AWS CloudFormation y elija Create Stack (Crear pila).

  2. Elija Template is ready (La plantilla está lista) y en la sección Specify template (Especificar plantilla), seleccione Amazon S3 URL (URL de Amazon S3). Copie y pegue la siguiente URL en el cuadro de texto: https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template

    El enlace proporciona la ubicación de la plantilla de aplicación web. Para ver los recursos que creará la pila, elija el enlace, que abrirá la plantilla. En la sección de recursos, 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.

  3. Tras revisar la plantilla, elija Next (Siguiente).

  4. 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.

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

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

    Podría llevarle varios minutos a AWS CloudFormation crear la pila.

  7. 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 recursos y datos de la pila de AWS CloudFormation en la AWS Management Console.

    Para verificar la subred y el grupo de seguridad de la instancia, vea las propiedades de la instancia en la consola de Amazon 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 recursos y datos de la pila de AWS CloudFormation en la AWS Management Console.

Paso 3: Eliminar los recursos

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

Para eliminar las pilas
  1. En la consola de AWS CloudFormation, elija la pila SampleWebAppCrossStack.

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

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

  4. Una vez que se haya eliminado la pila, repita los mismos pasos con la pila de SampleNetworkCrossStack.

    nota

    Espere hasta que AWS CloudFormation elimine por completo la pila SampleWebAppCrossStack. Si la instancia de EC2 sigue ejecutándose en la VPC, AWS CloudFormation no eliminará la VPC en la pila SampleNetworkCrossStack.

    Todos los recursos que ha creado anteriormente se eliminan.

Utilice las plantillas de ejemplo de este tutorial para crear sus propios pilas de referencia cruzada.