Punto de conexión de protección de reducción horizontal de tareas de Amazon ECS - Amazon Elastic Container Service

Punto de conexión de protección de reducción horizontal de tareas de Amazon ECS

El agente del contenedor de Amazon ECS inyecta automáticamente la variable de entorno ECS_AGENT_URI en los contenedores de las tareas de Amazon ECS para proporcionar un método que permita interactuar con el punto de conexión de la API del agente de contenedor.

Recomendamos utilizar el punto de conexión del agente de contenedores de Amazon ECS para tareas que puedan determinar por sí mismas la necesidad de protección.

Cuando un contenedor comienza a procesar el trabajo, puede configurar el atributo protectionEnabled a través de la ruta del punto de conexión de protección de reducción horizontal de tareas $ECS_AGENT_URI/task-protection/v1/state desde el contenedor.

Utilice una solicitud PUT a este URI desde dentro de un contenedor para establecer la protección de reducción horizontal. Una solicitud GET a este URI devolverá el estado de protección actual de una tarea.

Parámetros de solicitud de protección de reducción horizontal de tareas

Puede configurar la protección de reducción horizontal de tareas mediante el punto de conexión ${ECS_AGENT_URI}/task-protection/v1/state con los siguientes parámetros de solicitud.

ProtectionEnabled

Especifique true para marcar una tarea para su protección. Especifique false si desea eliminar la protección y hacer que la tarea pueda cancelarse.

Tipo: Booleano

Obligatorio: sí

ExpiresInMinutes

Número de minutos que debe transcurrir para proteger la tarea. Puede especificar un mínimo de 1 minuto y un máximo de 2880 minutos (48 horas). Durante este periodo, la tarea no finalizará con eventos de reducción horizontal del escalado automático del servicio o implementaciones. Una vez transcurrido este período, el parámetro protectionEnabled se restablecerá a false.

Si no especifica el tiempo, la tarea se protege automáticamente durante 120 minutos (2 horas).

Tipo: entero

Requerido: no

En los siguientes ejemplos se muestra cómo configurar la protección de tareas con diferentes duraciones.

Ejemplo de cómo proteger una tarea con el periodo predeterminado

En este ejemplo se muestra cómo proteger una tarea con el periodo de tiempo predeterminado de 2 horas.

curl --request PUT --header 'Content-Type: application/json' ${ECS_AGENT_URI}/task-protection/v1/state --data '{"ProtectionEnabled":true}'

Ejemplo de cómo proteger una tarea durante 60 minutos

En este ejemplo se muestra cómo proteger una tarea durante 60 minutos mediante el parámetro expiresInMinutes.

curl --request PUT --header 'Content-Type: application/json' ${ECS_AGENT_URI}/task-protection/v1/state --data '{"ProtectionEnabled":true,"ExpiresInMinutes":60}'

Ejemplo de cómo proteger una tarea durante 24 horas

En este ejemplo se muestra cómo proteger una tarea durante 24 horas mediante el parámetro expiresInMinutes.

curl --request PUT --header 'Content-Type: application/json' ${ECS_AGENT_URI}/task-protection/v1/state --data '{"ProtectionEnabled":true,"ExpiresInMinutes":1440}'

La solicitud PUT devolverá la siguiente respuesta.

{ "protection": { "ExpirationDate": "2023-12-20T21:57:44.837Z", "ProtectionEnabled": true, "TaskArn": "arn:aws:ecs:us-west-2:111122223333:task/1234567890abcdef0" } }

Parámetros de respuesta de protección de la reducción horizontal de tareas

La siguiente información se devuelve desde el punto de conexión de reducción horizontal de tareas ${ECS_AGENT_URI}/task-protection/v1/state en la respuesta de JSON.

ExpirationDate

La época en la que caducará la protección de la tarea. Si la tarea no está protegida, este valor será nulo.

ProtectionEnabled

El estado de protección de la tarea. Si la protección de reducción horizontal está habilitada para una tarea, el valor es true. De lo contrario, es false.

TaskArn

Nombre de recurso de Amazon (ARN) de la tarea a la que pertenece el contenedor.

En el ejemplo siguiente se muestran los detalles que se devuelven de una tarea protegida.

curl --request GET ${ECS_AGENT_URI}/task-protection/v1/state
{ "protection":{ "ExpirationDate":"2023-12-20T21:57:44Z", "ProtectionEnabled":true, "TaskArn":"arn:aws:ecs:us-west-2:111122223333:task/1234567890abcdef0" } }

Cuando se produce un error, se devuelve la siguiente información.

Arn

El nombre de recurso de Amazon (ARN) de la tarea.

Detail

Los detalles relacionados con el error.

Reason

El motivo del error.

En el ejemplo siguiente se muestran los detalles que se devuelven de una tarea que no está protegida.

{ "failure":{ "Arn":"arn:aws:ecs:us-west-2:111122223333:task/1234567890abcdef0", "Detail":null, "Reason":"TASK_NOT_VALID" } }

Cuando se produce una excepción, se devuelve la siguiente información.

requestID

El ID de solicitud de AWS para la llamada a la API de Amazon ECS que produce una excepción.

Arn

El nombre de recurso de Amazon (ARN) completo del servicio o la tarea.

Code

Código de error.

Message

Mensaje de error.

nota

Si aparece un error RequestError o RequestTimeout, es probable que se trate de un problema de red. Intente utilizar puntos de conexión de VPC para Amazon ECS.

En el ejemplo siguiente se muestran los detalles que se devuelven cuando se produce un error.

{ "requestID":"12345-abc-6789-0123-abc", "error":{ "Arn":"arn:aws:ecs:us-west-2:555555555555:task/my-cluster-name/1234567890abcdef0", "Code":"AccessDeniedException", "Message":"User: arn:aws:sts::444455556666:assumed-role/my-ecs-task-role/1234567890abcdef0 is not authorized to perform: ecs:GetTaskProtection on resource: arn:aws:ecs:us-west-2:555555555555:task/test/1234567890abcdef0 because no identity-based policy allows the ecs:GetTaskProtection action" } }

El siguiente error aparece si el agente de Amazon ECS no puede obtener una respuesta del punto de conexión de Amazon ECS por motivos como problemas de red o si el plano de control de Amazon ECS no funciona.

{ "error": { "Arn": "arn:aws:ecs:us-west-2:555555555555:task/my-cluster-name/1234567890abcdef0", "Code": "RequestCanceled", "Message": "Timed out calling Amazon ECS Task Protection API" } }

El siguiente error aparece cuando el agente de Amazon ECS recibe una excepción de limitación de Amazon ECS.

{ "requestID": "12345-abc-6789-0123-abc", "error": { "Arn": "arn:aws:ecs:us-west-2:555555555555:task/my-cluster-name/1234567890abcdef0", "Code": "ThrottlingException", "Message": "Rate exceeded" } }