

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Coordine la dependencia de los recursos y la ejecución de tareas mediante la construcción AWS Fargate WaitCondition hook
<a name="use-the-aws-fargate-waitcondition-hook-construct"></a>

*Stan Fan, Amazon Web Services*

## Resumen
<a name="use-the-aws-fargate-waitcondition-hook-construct-summary"></a>

Este patrón describe el paquete npm WaitCondition hook (`waitcondition-hook-for-aws-fargate-task`), que es una solución nativa de la nube diseñada para organizar tareas [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)en clústeres de Amazon Elastic Container Service (Amazon ECS). 

El WaitCondition gancho es una AWS Cloud Development Kit (AWS CDK) construcción diseñada específicamente para su integración con. AWS CloudFormation El WaitCondition gancho ofrece las siguientes funciones clave:
+ Actúa como un mecanismo de condición de espera y detiene la ejecución de la CloudFormation pila hasta que se complete una tarea específica de Fargate, lo que ayuda a organizar las implementaciones y el aprovisionamiento de recursos.
+ Soporta TypeScript Python, lo que lo hace ideal para AWS CDK proyectos.
+ Permite a los desarrolladores y arquitectos orquestar las implementaciones coordinando la finalización de las tareas y la administración de los recursos para las aplicaciones en contenedores en AWS.
+ Permite ejecutar tareas de Fargate con uno o varios contenedores integrados en un CloudFormation ciclo de vida, y puede gestionar los errores de las tareas y revertir la CloudFormation pila después de un error en las tareas.
+ Proporciona flexibilidad para agregar dependencias entre los recursos y los resultados de la ejecución de tareas de Fargate, lo que permite personalizar tareas o invocar otros puntos de conexión. Por ejemplo, puede pausar una CloudFormation pila y esperar a que se realice una migración de base de datos (realizada mediante una tarea de Fargate) y aprovisionar otros recursos que podrían depender del éxito de la migración de la base de datos.

## Requisitos previos y limitaciones
<a name="use-the-aws-fargate-waitcondition-hook-construct-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS.
+ AWS Cloud Development Kit (AWS CDK) Interfaz de línea de comandos (CLI) instalada en una estación de trabajo local. Para obtener más información, consulte la [referencia de AWS CDK CLI](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) en la AWS CDK documentación.
+ [Gestor de paquetes de nodos (npm), instalado en una estación de trabajo local y configurado para entrar.AWS CDK TypeScript](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-typescript.html) Para obtener más información, consulte [Descarga e instalación de Node.js y npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) en la documentación de npm.
+ Yarn instalado en un equipo de trabajo local. Para más información, consulte [Installation](https://yarnpkg.com/getting-started/install) en la documentación de Yarn.

**Limitaciones**
+ Esta solución se implementa en una sola. Cuenta de AWS
+ El código de retorno esperado del contenedor es `0` para indicar que es correcto. Cualquier otro código devuelto indica un error y la CloudFormation pila se revertirá. 
+ Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="use-the-aws-fargate-waitcondition-hook-construct-architecture"></a>

En el siguiente diagrama se muestra la arquitectura del constructo.

![\[Flujo de trabajo de AWS Step Functions del constructo waitcondition-hook-for-aws -fargate-task.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/598020df-908c-4486-9844-c05af759c18a.png)


En el diagrama siguiente se muestra el flujo de trabajo de `waitcondition-hook-for-aws-fargate-task`:

1. `WaitCondition`y `WaitConditionHandler` están aprovisionados para escuchar la respuesta de las funciones. AWS Lambda 

1. Según el resultado de la tarea, se desencadena `CallbackFunction` o `ErrorHandlerFunction` al finalizar la tarea de Fargate.

1. La función de Lambda envía una señal de CORRECTO o ERROR a `WaitConditionHandler`.

1. `WaitConditionHandler` continúa aprovisionando los recursos si el resultado de la ejecución de la tarea de Fargate es correcto o revierte la pila si se produjo un error en la tarea.

En el diagrama siguiente se muestra un ejemplo de un flujo de trabajo para hacer una migración de bases de datos.

![\[Flujo de trabajo de migración de bases de datos de Amazon RDS mediante WaitCondition Hook Construct.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/3b83fc2a-80bb-4ba9-9637-782060493cf0.png)


El flujo de trabajo de ejemplo utiliza el constructo `waitcondition-hook-for-aws-fargate-task` para hacer una migración de base de datos de la manera siguiente:

1. Una instancia de Amazon Relational Database Service (Amazon RDS) aprovisionada.

1. El constructo `waitcondition-hook-for-aws-fargate-task` ejecuta la tarea de migración de la base de datos y detiene la pila como una instancia de Amazon Elastic Compute Cloud (Amazon EC2).

1. Si la tarea de migración finaliza correctamente, envía una señal de éxito a CloudFormation. De lo contrario, envía una señal de error a la pila CloudFormation y la revierte.

## Tools (Herramientas)
<a name="use-the-aws-fargate-waitcondition-hook-construct-tools"></a>

**Servicios de AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)es un marco de desarrollo de software que le ayuda a definir la infraestructura de nube en código y a aprovisionarla CloudFormation.
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en todo el Cuentas de AWS mundo Regiones de AWS.
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) le CloudWatch ayuda a supervisar las métricas de sus AWS recursos y las aplicaciones en las que se ejecuta AWS en tiempo real.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) es un servicio de administración de contenedores escalable y rápido que ayuda a ejecutar, detener y administrar contenedores en un clúster.
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) le permite ejecutar contenedores sin necesidad de administrar servidores o instancias de Amazon EC2. Se utiliza en conjunto con Amazon ECS.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)es un servicio de organización sin servidor que le ayuda a combinar AWS Lambda funciones y otras Servicios de AWS para crear aplicaciones esenciales para la empresa.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) le ayuda a lanzar AWS recursos en una red virtual que haya definido. Esa red virtual es similar a la red tradicional que utiliza en su propio centro de datos, con los beneficios de utilizar la infraestructura escalable de AWS. 

**Otras herramientas**
+ [npm](https://docs.npmjs.com/about-npm) es un registro de software que se ejecuta en un entorno Node.js y se utiliza para compartir o tomar prestados paquetes y administrar la implementación de paquetes privados.
+ [Yarn](https://yarnpkg.com/) es un administrador de paquetes de código abierto que puede usar para administrar las dependencias en JavaScript los proyectos. Yarn puede serle útil para instalar, actualizar, configurar y eliminar las dependencias de los paquetes.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [waitcondition-hook-for-aws-fargate-task](https://github.com/aws-samples/waitcondition-hook-for-aws-fargate-task).

## Prácticas recomendadas
<a name="use-the-aws-fargate-waitcondition-hook-construct-best-practices"></a>
+ Al crear su AWS CDK aplicación, siga las [prácticas recomendadas para desarrollar e implementar una infraestructura de nube que figuran AWS CDK en la documentación de la versión 2](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html). AWS CDK 
+ Para la AWS Fargate tarea, siga las [prácticas recomendadas para las imágenes de contenedores de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/application.html) de la documentación de Amazon ECS.

## Epics
<a name="use-the-aws-fargate-waitcondition-hook-construct-epics"></a>

### Configure el AWS CDK
<a name="set-up-the-cdk"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale el AWS CDK. | Para instalarlo AWS CDK en su máquina local u otro entorno, ejecute el siguiente comando: <pre>npm install -g aws-cdk@latest</pre> | Arquitecto de la nube, desarrollador de aplicaciones | 
| Inicie el AWS CDK. | El [arranque](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) es el proceso para preparar un [entorno](https://docs.aws.amazon.com/cdk/v2/guide/environments.html) para la implementación. Para iniciar su AWS CDK kit de herramientas para el objetivo Cuenta de AWS Región de AWS, ejecute el siguiente comando:<pre>cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1 </pre>Este comando crea una CloudFormation pila llamada. `CDKToolkit`  | Arquitecto de la nube | 

### Ejecute el WaitCondition enlace para la construcción de AWS Fargate tareas
<a name="run-the-waitcondition-hook-for-fargatelong-tasks-construct"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear el proyecto de CDK | Cree un proyecto de CDK con el lenguaje que prefiera. Este patrón usa TypeScript. Para crear un proyecto de CDK mediante TypeScript, ejecute el siguiente comando: `cdk init app —language typescript` | Arquitecto de la nube | 
| Instale el paquete. | Ejecute `npm install` en la ruta raíz de su proyecto de CDK. Después de instalar la biblioteca de CDK, ejecute el comando siguiente para instalar `waitcondition-hook-for-aws-fargate-task`: `yarn add waitcondition-hook-for-aws-fargate-task` | Arquitecto de la nube | 
| Cree su aplicación de CDK y los componentes de Amazon ECS. | Cree el proyecto de CDK. Se requiere un recurso de definición de tareas de Amazon ECS. Para obtener información acerca de la creación de una definición de tareas, consulte [Definiciones de tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) en la documentación de Amazon ECS.El ejemplo siguiente utiliza este constructo:<pre>import * as cdk from 'aws-cdk-lib';<br />import { Vpc } from 'aws-cdk-lib/aws-ec2';<br />import * as ecr from 'aws-cdk-lib/aws-ecr';<br />import * as ecs from 'aws-cdk-lib/aws-ecs';<br />import { Construct } from 'constructs';<br />import { FargateRunner } from 'waitcondition-hook-for-aws-fargate-task';<br />import { Queue } from 'aws-cdk-lib/aws-sqs';<br /><br />export class FargateRunnerStack extends cdk.Stack {<br />    constructor(scope: Construct, id: string, props?: cdk.StackProps) {<br />        super(scope, id, props);<br />        // Define the VPC<br />        const vpc = new Vpc(this, 'MyVpc')<br />        // Define the Fargate Task<br />        const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTask', {});<br />        // Import exiting ecr repo<br />        const repo = ecr.Repository.fromRepositoryName(this, 'MyRepo', 'RepoName');<br />        // Add a container to the task<br />        taskDefinition.addContainer('MyContainer', {<br />            image: ecs.ContainerImage.fromEcrRepository(repo),<br />        });<br />        // Create the Fargate runner<br />        const myFargateRunner = new FargateRunner(this, 'MyRunner', {<br />            fargateTaskDef: taskDefinition,<br />            timeout: `${60 * 5}`,<br />            vpc: vpc,<br />        });<br />        // Create the SQS queue<br />        const myQueue = new Queue(this, 'MyQueue', {});<br />        // Add dependency<br />        myQueue.node.addDependency(myFargateRunner);<br />    }<br />}</pre> | Arquitecto de la nube | 
| Sintetice y lance la aplicación de CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)El constructo `waitcondition-hook-for-aws-fargate-task` ejecuta la tarea de Fargate.  | Arquitecto de la nube | 

### Limpieza
<a name="clean-up"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Eliminación de recursos. | Para limpiar los recursos aprovisionados en el paso anterior, ejecute el comando siguiente:<pre>cdk destroy </pre> | Arquitecto de la nube | 

## Resolución de problemas
<a name="use-the-aws-fargate-waitcondition-hook-construct-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Fallo general en la CloudFormation pila | Para ayudar a solucionar los errores generales de la CloudFormation pila, añade la `--no-rollback` marca como se muestra en el siguiente ejemplo: <pre>cdk deploy --no-rollback</pre>Este comando hará que la CloudFormation pila deje de revertirse, lo que te proporcionará recursos para solucionar problemas. Para obtener más información, consulte [Elegir cómo gestionar los errores al aprovisionar recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html) en la CloudFormation documentación. | 
| AWS Step Functions error | Es posible que una máquina de AWS Step Functions estados no se ejecute por diferentes motivos. Una vez configurado `—disable-rollback`, haga lo siguiente para solucionar un error:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Para obtener más información, consulte [Solución de problemas en Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/troubleshooting.html) y [Visualización de los detalles de ejecución en la consola de Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-view-execution-details.html#exec-details-intf-step-details) en la AWS Step Functions documentación. | 
| AWS Lambda fallo de función | Este constructo proporciona dos funciones de Lambda: `CallbackFunction` y `ErrorhandlerFunction`. Pueden producirse error por varios motivos, como excepciones no controladas. Haga lo que se indica a continuación para solucionar un error: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Para obtener más información, consulte [Solución de problemas en Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-troubleshooting.html) en la AWS Lambda documentación. | 

## Recursos relacionados
<a name="use-the-aws-fargate-waitcondition-hook-construct-resources"></a>

**AWS documentación**
+ [AWS CDK Construye una referencia de API](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html)
+ [Cómo empezar con el AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Aprenda a crear y utilizar los recursos de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started.html)
+ [Aprenda cómo empezar a usar Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html)
+ [¿Qué es AWS CDK?](https://docs.aws.amazon.com/cdk/v2/guide/home.html)

**Otros recursos**
+ [Waitcondition Hook for AWS Fargate task](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) (npm)
+ [waitcondition-hook-for-aws-fargate-task 1.0.6](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) (pypi.org)