Coordine la dependencia de los recursos y la ejecución de las tareas mediante la construcción AWS Fargate WaitCondition hook - Recomendaciones de AWS

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 las tareas mediante la construcción AWS Fargate WaitCondition hook

Stan Fan, Amazon Web Services

Resumen

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 Fargateen 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

Requisitos previos 

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. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.

Arquitectura

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.

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

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

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

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

  4. 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 la construcción de WaitCondition ganchos.

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.

  2. La waitcondition-hook-for-aws-fargate-task construcción ejecuta la tarea de migración de la base de datos y pausa la pila como una instancia de Amazon Elastic Compute Cloud (Amazon EC2).

  3. 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)

Servicios de AWS

  • AWS Cloud Development Kit (AWS CDK)es un marco de desarrollo de software que le ayuda a definir la infraestructura de la nube en código y a aprovisionarla CloudFormation.

  • CloudFormationle 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 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) 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 Fargatele ayuda a ejecutar contenedores sin necesidad de gestionar servidores o EC2 instancias de Amazon. Se utiliza en conjunto con Amazon ECS.

  • AWS Identity and Access Management (IAM) 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 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 Functionses 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) 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 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 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.

Prácticas recomendadas

Epics

TareaDescripciónHabilidades requeridas

Instale el AWS CDK.

Para instalarlo AWS CDK en su máquina local u otro entorno, ejecute el siguiente comando:

npm install -g aws-cdk@latest
Arquitecto de la nube, desarrollador de aplicaciones

Arranque el AWS CDK.

El arranque es el proceso para preparar un entorno 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:

cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1

Este comando crea una CloudFormation pila con el nombre. CDKToolkit

Arquitecto de la nube
TareaDescripciónHabilidades 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 en la documentación de Amazon ECS.

El ejemplo siguiente utiliza este constructo:

import * as cdk from 'aws-cdk-lib'; import { Vpc } from 'aws-cdk-lib/aws-ec2'; import * as ecr from 'aws-cdk-lib/aws-ecr'; import * as ecs from 'aws-cdk-lib/aws-ecs'; import { Construct } from 'constructs'; import { FargateRunner } from 'waitcondition-hook-for-aws-fargate-task'; import { Queue } from 'aws-cdk-lib/aws-sqs'; export class FargateRunnerStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Define the VPC const vpc = new Vpc(this, 'MyVpc') // Define the Fargate Task const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTask', {}); // Import exiting ecr repo const repo = ecr.Repository.fromRepositoryName(this, 'MyRepo', 'RepoName'); // Add a container to the task taskDefinition.addContainer('MyContainer', { image: ecs.ContainerImage.fromEcrRepository(repo), }); // Create the Fargate runner const myFargateRunner = new FargateRunner(this, 'MyRunner', { fargateTaskDef: taskDefinition, timeout: `${60 * 5}`, vpc: vpc, }); // Create the SQS queue const myQueue = new Queue(this, 'MyQueue', {}); // Add dependency myQueue.node.addDependency(myFargateRunner); } }
Arquitecto de la nube

Sintetice y lance la aplicación de CDK.

  1. Para generar los activos y la CloudFormation plantilla, ejecute el siguiente comando en la ruta raíz de la CDK:

    cdk synth

  2. Una vez que el comando synth se ejecute correctamente, ejecute el comando siguiente para implementar los recursos:

    cdk deploy

El constructo waitcondition-hook-for-aws-fargate-task ejecuta la tarea de Fargate.

Arquitecto de la nube
TareaDescripciónHabilidades requeridas

Eliminación de recursos.

Para limpiar los recursos aprovisionados en el paso anterior, ejecute el comando siguiente:

cdk destroy
Arquitecto de la nube

Resolución de problemas

ProblemaSolució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:

cdk deploy --no-rollback

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 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:

  1. Inicie sesión en Consola de administración de AWS, introduzca Step Functions en el campo de búsqueda y, a continuación, seleccione el servicio Step Functions.

  2. En el panel de navegación izquierdo, elija Máquinas de estado y, a continuación, seleccione la máquina de estado aprovisionada por la CloudFormation pila.

  3. En Ejecuciones, elija el nombre de la ejecución en la que se produjo el error inesperado.

  4. En la vista Eventos, elija el paso del error.

Para obtener más información, consulte Solución de problemas en Step Functions y Visualización de los detalles de ejecución en la consola de Step Functions 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:

  1. Inicie sesión en Consola de administración de AWS, introduzca CloudWatchen el campo de búsqueda y, a continuación, seleccione el CloudWatch servicio.

  2. En el panel de navegación izquierdo, elija Registros, Grupos de registros.

  3. En el campo de búsqueda, introduzca el nombre de la función de Lambda.

  4. Elija el nombre de grupo de registros que se asocia a la función de Lambda.

  5. Para ir al resultado de la ejecución de la función de Lambda, elija el flujo de registro más reciente.

Para obtener más información, consulte Solución de problemas en Lambda en la AWS Lambda documentación.

Recursos relacionados

AWS documentación

Otros recursos