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. Especifiquefalse
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 comofalse
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
ouRequestTimeout
, 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" } }