Administración de una tarea de contenedor (Amazon ECS, Amazon SNS) - AWS Step Functions

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.

Administración de una tarea de contenedor (Amazon ECS, Amazon SNS)

En este proyecto de muestra, se explica cómo ejecutar una tarea de AWS Fargate y, a continuación, enviar una notificación de Amazon SNS que depende de si el trabajo se realiza correcta o incorrectamente. La implementación de este proyecto de muestra creará una máquina de estado de AWS Step Functions, un clúster de Fargate y un tema de Amazon SNS.

En este proyecto, Step Functions utiliza una máquina de estado para llamar a la tarea de Fargate de forma síncrona. A continuación, espera a que la tarea se realice correcta o incorrectamente y envía un tema de Amazon SNS con un mensaje que informa sobre si el trabajo ha finalizado correctamente o con errores.

Paso 1: Crear la máquina de estado y aprovisionar recursos

  1. Abra la consola de Step Functions y seleccione Crear máquina de estado.

  2. Escriba Manage a container task en el cuadro de búsqueda y, a continuación, seleccione Administración de una tarea de contenedor en los resultados de búsqueda que aparecen.

  3. Elija Siguiente para continuar.

  4. Step Functions muestra una lista de las Servicios de AWS utilizadas en el proyecto de muestra que ha seleccionado. También muestra un gráfico del flujo de trabajo para el proyecto de muestra. Implemente este proyecto en su empresa Cuenta de AWS o utilícelo como punto de partida para crear sus propios proyectos. En función de cómo desee continuar, elija Ejecutar una demostración o Crear a partir de ella.

    En este proyecto de muestra se implementan los siguientes recursos:

    • ¿Un AWS Fargate clúster

    • Un tema de Amazon SNS

    • ¿Una máquina de AWS Step Functions estados

    • Funciones relacionadas AWS Identity and Access Management (IAM)

    En la siguiente imagen se ilustra el gráfico del flujo de trabajo del proyecto de muestra Administración de una tarea de contenedor:

    
            Gráfico del flujo de trabajo del proyecto de muestra Administración de una tarea de contenedor.
  5. Elija Utilizar plantilla para continuar con la selección.

  6. Realice una de las acciones siguientes:

    • Si se ha seleccionado Crear a partir de ella, Step Functions crea el prototipo de flujo de trabajo para el proyecto de muestra que ha seleccionado. Step Functions no implementa los recursos que se enumeran en la definición del flujo de trabajo.

      En Modo Diseño de Workflow Studio, arrastre y suelte los estados desde el Navegador de estados para seguir creando su prototipo de flujo de trabajo. Del mismo modo, cambie al Modo Código que proporciona un editor de código integrado similar a VS Code para actualizar la definición (ASL) de Lenguaje de estados de Amazon de su máquina de estado en la consola de Step Functions. Para obtener más información acerca del uso de Workflow Studio para crear máquinas de estados, consulte Usar Workflow Studio.

      importante

      No olvide actualizar el marcador de posición del nombre de recurso de Amazon (ARN) para los recursos que se utilizan en el proyecto de muestra antes de ejecutar el flujo de trabajo.

    • Si seleccionó Ejecutar una demostración, Step Functions crea un proyecto de ejemplo de solo lectura que utiliza una AWS CloudFormation plantilla para implementar los AWS recursos que figuran en esa plantilla en su empresa. Cuenta de AWS

      sugerencia

      Seleccione Código para ver la definición de máquina de estados del proyecto de muestra.

      Cuando esté listo, elija Implementar y ejecutar para implementar el proyecto de muestra y crear los recursos.

      El proceso de creación de estos recursos y los permisos de IAM relacionados puede tardar hasta 10 minutos. Mientras se despliegan sus recursos, puede abrir el enlace CloudFormation Stack ID para ver qué recursos se están aprovisionando.

      Una vez que se creen todos los recursos del proyecto de muestra, podrá ver el nuevo proyecto de muestra en la página Máquinas de estado.

      importante

      Es posible que se apliquen cargos estándar por cada servicio utilizado en la CloudFormation plantilla.

Paso 2: Ejecutar la máquina de estado

  1. En la página Máquina de estado, elija su proyecto de muestra.

  2. En la página del proyecto de muestra, seleccione Iniciar ejecución.

  3. En el cuadro de diálogo Iniciar ejecución, haga lo siguiente:

    1. (Opcional) Para identificar la ejecución, puede especificar un nombre en el cuadro Nombre. De forma predeterminada, Step Functions genera automáticamente un nombre de ejecución único.

      nota

      Step Functions le permite crear nombres para máquinas de estados, ejecuciones y actividades, así como etiquetas que contienen caracteres no ASCII. Estos nombres que no son ASCII no funcionan con Amazon. CloudWatch Para asegurarse de que puede realizar un seguimiento de CloudWatch las métricas, elija un nombre que utilice únicamente caracteres ASCII.

    2. (Opcional) En el cuadro Entrada, introduzca los valores de entrada en formato JSON para ejecutar el flujo de trabajo.

      Si se ha seleccionado Ejecutar una demostración, no es necesario proporcionar ninguna entrada de ejecución.

      nota

      Si el proyecto de demostración que implementó contiene datos de entrada de ejecución rellenados previamente, utilice esa entrada para ejecutar la máquina de estado.

    3. Seleccione Iniciar ejecución.

    4. La consola de Step Functions le dirige a una página cuyo título es su ID de ejecución. Esta página se conoce como Detalles de la ejecución. En esta página, puede revisar los resultados de la ejecución a medida que avanza la ejecución o una vez finalizada.

      Para revisar los resultados de la ejecución, elija los estados individuales en la Vista de gráfico y, a continuación, elija las pestañas individuales del panel Detalles del paso para ver los detalles de cada estado, incluidas la entrada, la salida y la definición, respectivamente. Para obtener más información sobre la ejecución que puede ver en la página Detalles de la ejecución, consulte Página de detalles de ejecución: información general de la interfaz.

Código de la máquina de estado de ejemplo

La máquina de estados de este proyecto de ejemplo se integra con AWS Fargate Amazon SNS al pasar los parámetros directamente a esos recursos. Desplácese hasta la máquina de estado de este ejemplo para ver cómo Step Functions utiliza una máquina de estado para llamar a la tarea de Fargate de forma sincrónica, espera a que la tarea se realice correctamente o produzca un error y envía un tema de Amazon SNS con un mensaje acerca de si el trabajo ha finalizado correctamente o ha producido un error.

Para obtener más información acerca de cómo AWS Step Functions puede controlar otros AWS servicios, consulteUso AWS Step Functions con otros servicios.

{ "Comment": "An example of the Amazon States Language for notification on an AWS Fargate task completion", "StartAt": "Run Fargate Task", "TimeoutSeconds": 3600, "States": { "Run Fargate Task": { "Type": "Task", "Resource": "arn:aws:states:::ecs:runTask.sync", "Parameters": { "LaunchType": "FARGATE", "Cluster": "arn:aws:ecs:ap-northeast-1:123456789012:cluster/FargateTaskNotification-ECSCluster-VHLR20IF9IMP", "TaskDefinition": "arn:aws:ecs:ap-northeast-1:123456789012:task-definition/FargateTaskNotification-ECSTaskDefinition-13YOJT8Z2LY5Q:1", "NetworkConfiguration": { "AwsvpcConfiguration": { "Subnets": [ "subnet-07e1ad3abcfce6758", "subnet-04782e7f34ae3efdb" ], "AssignPublicIp": "ENABLED" } } }, "Next": "Notify Success", "Catch": [ { "ErrorEquals": [ "States.ALL" ], "Next": "Notify Failure" } ] }, "Notify Success": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "Message": "AWS Fargate Task started by Step Functions succeeded", "TopicArn": "arn:aws:sns:ap-northeast-1:123456789012:FargateTaskNotification-SNSTopic-1XYW5YD5V0M7C" }, "End": true }, "Notify Failure": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "Message": "AWS Fargate Task started by Step Functions failed", "TopicArn": "arn:aws:sns:ap-northeast-1:123456789012:FargateTaskNotification-SNSTopic-1XYW5YD5V0M7C" }, "End": true } } }

Ejemplo de IAM

Esta política de ejemplo AWS Identity and Access Management (IAM) generada por el proyecto de muestra incluye los privilegios mínimos necesarios para ejecutar la máquina de estados y los recursos relacionados. Es una práctica recomendada incluir solo los permisos necesarios en las políticas de IAM.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:ap-northeast-1:123456789012:FargateTaskNotification-SNSTopic-1XYW5YD5V0M7C" ], "Effect": "Allow" }, { "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:ap-northeast-1:123456789012:task-definition/FargateTaskNotification-ECSTaskDefinition-13YOJT8Z2LY5Q:1" ], "Effect": "Allow" }, { "Action": [ "ecs:StopTask", "ecs:DescribeTasks" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:ap-northeast-1:123456789012:rule/StepFunctionsGetEventsForECSTaskRule" ], "Effect": "Allow" } ] }

Para obtener información sobre cómo configurar IAM al utilizar Step Functions con otros AWS servicios, consultePolíticas de IAM para servicios integrados.