Endpoint de Proteção de Tarefa na Redução de Escala do Amazon ECS - Amazon Elastic Container Service

Endpoint de Proteção de Tarefa na Redução de Escala do Amazon ECS

O agente de contêiner do Amazon ECS injeta automaticamente a variável de ambiente ECS_AGENT_URI nos contêineres de tarefas do Amazon ECS para fornecer um método de interação com o endpoint da API do agente de contêiner.

Recomendamos o uso do endpoint do agente de contêiner do Amazon ECS para tarefas que possam autodeterminar a necessidade de proteção.

Quando um contêiner começa a processar o trabalho, você pode definir o atributo protectionEnabled por meio do caminho $ECS_AGENT_URI/task-protection/v1/state do endpoint de proteção de tarefa na redução de escala de dentro do contêiner.

Use uma solicitação PUT para esse URI de dentro de um contêiner para definir a proteção de tarefa na redução da escala. Uma solicitação GET para esse URI retorna o status atual da proteção de uma tarefa.

Parâmetros de solicitação da proteção de tarefa na redução de escala

É possível definir a proteção de tarefa na redução da escala na horizontal usando o endpoint ${ECS_AGENT_URI}/task-protection/v1/state com os parâmetros de solicitação a seguir.

ProtectionEnabled

Especifique true para que uma tarefa receba proteção. Especifique false para remover a proteção e tornar a tarefa elegível para encerramento.

Tipo: booliano

Obrigatório: Sim

ExpiresInMinutes

O número de minutos em que a tarefa é protegida. É possível especificar, no mínimo, de 1 minuto a 2.880 minutos (48 horas). Durante esse período, a tarefa não será encerrada por eventos de redução da escala na horizontal decorrentes de ajuste de escala automático do serviço ou de implantações. Após esse período, o parâmetro protectionEnabled será definido como false

Se você não especificar o período, a tarefa será automaticamente protegida por 120 minutos (2 horas).

Tipo: número inteiro

Obrigatório: Não

Os exemplos a seguir mostram como definir uma proteção de tarefa na redução da escala horizontalmente com diferentes durações.

Exemplo de como proteger uma tarefa com o período padrão

Este exemplo mostra como proteger uma tarefa com o período padrão de duas horas.

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

Exemplo de como proteger uma tarefa por 60 minutos

Este exemplo mostra como proteger uma tarefa por 60 minutos usando o parâmetro expiresInMinutes.

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

Exemplo de como proteger uma tarefa por 24 horas

Este exemplo mostra como proteger uma tarefa por 24 horas usando o parâmetro expiresInMinutes.

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

A solicitação PUT retorna a resposta a seguir.

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

Parâmetros de resposta da proteção de tarefa na redução de escala

As informações a seguir são retornadas do endpoint de proteção contra redução da escala na horizontal da tarefa ${ECS_AGENT_URI}/task-protection/v1/state na resposta em JSON .

ExpirationDate

O período em que a proteção da tarefa expirará. Se a tarefa não estiver protegida, esse valor será nulo.

ProtectionEnabled

O status de proteção da tarefa. Se a proteção contra redução da escala horizontalmente estiver ativada para uma tarefa, o valor será true. Caso contrário, ele será false.

TaskArn

O nome de recurso da Amazon (ARN) da tarefa à qual o contêiner pertence.

O exemplo a seguir mostra os detalhes retornados para uma tarefa 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" } }

As informações a seguir são retornadas quando ocorre uma falha.

Arn

O nome completo do recurso da Amazon (ARN) da tarefa.

Detail

Os detalhes relacionados à falha.

Reason

O motivo da falha.

O exemplo a seguir mostra os detalhes retornados para uma tarefa que não está protegida.

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

As informações a seguir são retornadas quando ocorre uma exceção.

requestID

O ID da solicitação da AWS para a chamada de API do Amazon ECS que resulta em uma exceção.

Arn

O nome completo do recurso da Amazon (ARN) da tarefa ou serviço.

Code

O código do erro.

Message

A mensagem de erro.

nota

Se surgir um erro RequestError ou RequestTimeout, provavelmente será um problema de rede. Experimente usar endpoints da VPC para o Amazon ECS.

O exemplo a seguir mostra os detalhes retornados quando ocorre um erro.

{ "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" } }

O erro a seguir será exibido se o agente do Amazon ECS não conseguir obter uma resposta do endpoint do Amazon ECS devido a problemas de rede ou inoperância do ambiente de gerenciamento do Amazon ECS.

{ "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" } }

O erro a seguir é exibido quando o agente do Amazon ECS recebe uma exceção de controle de utilização do 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" } }