Envío de alertas de Amazon Simple Notification Service para eventos de tareas detenidas de Amazon ECS - Amazon Elastic Container Service

Envío de alertas de Amazon Simple Notification Service para eventos de tareas detenidas de Amazon ECS

Configure una regla de eventos de Amazon EventBridge que solo capture eventos de tareas en los que la tarea dejó de ejecutarse porque uno de sus contenedores esenciales finalizó. El evento solo envía eventos de tareas con una propiedad stoppedReason específica al tema de Amazon SNS designado.

Requisito previo: configurar un clúster de prueba

Si no dispone de un clúster en ejecución de donde capturar eventos, siga los pasos que se describen en Introducción a la consola mediante contenedores de Linux en AWS Fargate para crear uno. Al final de este tutorial, ejecutará una tarea en este clúster para comprobar que el tema de Amazon SNS y la regla de EventBridge se han configurado correctamente.

Requisito previo: configurar los permisos para Amazon SNS

Para permitir que EventBridge publique en un tema de Amazon SNS, utilice los comandos aws sns get-topic-attributes y aws sns set-topic-attributes.

Para obtener más información sobre cómo agregar el permiso, consulte Permisos de Amazon SNS en la Guía para desarrolladores de Amazon Simple Notification Service.

Agregue los siguientes permisos:

{ "Sid": "PublishEventsToMyTopic", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns: Publish", "Resource": "arn:aws:sns:region:account-id:TaskStoppedAlert", }

Paso 1: Crear y suscribirse a un tema de Amazon SNS

Para este tutorial, se configura un tema de Amazon SNS para utilizarse como destino de eventos para la nueva regla de eventos.

Para obtener información acerca de cómo crear un tema de Amazon SNS y suscribirse a él, consulte Introducción a Amazon SNS en la Guía para desarrolladores de Amazon Simple Notification Service y utilice la siguiente tabla para determinar qué opciones seleccionar.

Opción Valor

Tipo

Estándar
Nombre

TaskStoppedAlert

Protocolo Correo electrónico
Punto de conexión

Una dirección de correo electrónico a la que actualmente tiene acceso

Paso 2: Registrar una regla de eventos

A continuación, registre una regla de eventos que capture solo eventos de tarea parada de tareas con contenedores parados.

Para obtener información sobre cómo crear y suscribirse a un tema de Amazon SNS, consulte Create a rule in Amazon EventBridge (Crear una regla en Amazon EventBridge) en la Guía del usuario de Amazon EventBridge y utilice la siguiente tabla para determinar qué opciones seleccionar.

Opción Valor

Tipo de regla

Regla con un patrón de evento

Origen del evento Eventos de AWS o eventos de socios de EventBridge
Patrón del evento

Patrón personalizado (editor JSON)

Patrón del evento
{ "source":[ "aws.ecs" ], "detail-type":[ "ECS Task State Change" ], "detail":{ "lastStatus":[ "STOPPED" ], "stoppedReason":[ "Essential container in task exited" ] } }
Tipo de objetivo

Servicio de AWS

Destino Tema de SNS
Tema

TaskStopPedAlert (El tema que ha creado en el paso 1)

Paso 3: Pruebe la regla

Compruebe que la regla funciona mediante la ejecución de una tarea que se cierra poco después de iniciarse. Si la regla de eventos está configurada correctamente, recibirá un mensaje de correo electrónico en unos minutos con el texto del evento. Si tiene una definición de tarea existente que puede satisfacer los requisitos de la regla, ejecute una tarea con ella. Si no lo hace, los siguientes pasos le guiarán a través del registro de una definición de tarea de Fargate y su ejecución.

  1. Abra la consola en https://console.aws.amazon.com/ecs/v2.

  2. En el panel de navegación, elija Task Definitions (Definiciones de tareas).

  3. Elija Create new task definition (Crear nueva definición de tarea) y Create new task definition with JSON (Crear nueva definición de tarea con JSON).

  4. En el cuadro del editor JSON, edite el archivo JSON y copie lo siguiente en el editor.

    { "containerDefinitions":[ { "command":[ "sh", "-c", "sleep 5" ], "essential":true, "image":"public.ecr.aws/amazonlinux/amazonlinux:latest", "name":"test-sleep" } ], "cpu":"256", "executionRoleArn":"arn:aws:iam::012345678910:role/ecsTaskExecutionRole", "family":"fargate-task-definition", "memory":"512", "networkMode":"awsvpc", "requiresCompatibilities":[ "FARGATE" ] }
  5. Seleccione Crear.

Para ejecutar una tarea a través de la consola
  1. Abra la consola en https://console.aws.amazon.com/ecs/v2.

  2. En la página Clústeres, seleccione el clúster que creó en los requisitos previos.

  3. En la pestaña Tasks (Tareas), elija Run new task (Ejecutar nueva tarea).

  4. En Application type (Tipo de aplicación), elija Task (Tarea).

  5. En Definición de tareas, elija fargate-task-definition.

  6. En Desired tasks (Tareas deseadas), ingrese el número de tareas que se lanzarán.

  7. Seleccione Crear.