Amazon ECS 작업 축소 보호 엔드포인트 - Amazon Elastic Container Service

Amazon ECS 작업 축소 보호 엔드포인트

Amazon ECS 컨테이너 에이전트는 Amazon ECS 작업의 컨테이너에 ECS_AGENT_URI 환경 변수를 자동으로 주입하여 컨테이너 에이전트 API 엔드포인트와 상호 작용하는 방법을 제공합니다.

보호 필요성을 스스로 결정할 수 있는 작업에는 Amazon ECS 컨테이너 에이전트 엔드포인트를 사용하는 것이 좋습니다.

컨테이너가 작업 처리를 시작하면 컨테이너 내에서 작업 축소 보호 엔드포인트 경로 $ECS_AGENT_URI/task-protection/v1/state를 통해 protectionEnabled 속성을 설정할 수 있습니다.

컨테이너 내에서 이 URI에 대한 PUT 요청은 작업 축소 보호를 설정합니다. 이 URI에 대한 GET 요청은 작업의 현재 보호 상태를 반환합니다.

작업 축소 보호 요청 파라미터

다음 요청 파라미터와 함께 ${ECS_AGENT_URI}/task-protection/v1/state 엔드포인트를 사용하여 작업 축소 보호를 설정할 수 있습니다.

ProtectionEnabled

작업을 보호 대상으로 표시하려면 true를 지정합니다. 보호를 제거하고 작업을 종료할 수 있도록 표시하려면 false를 지정합니다.

타입: 부울

필수 여부: 예

ExpiresInMinutes

작업이 보호되는 시간(분)입니다. 최소 1분에서 최대 2,880분(48시간)까지 지정할 수 있습니다. 이 기간 동안에는 서비스 Auto Scaling 또는 배포의 스케일 인 이벤트로 인해 작업이 종료되지 않습니다. 이 기간이 경과하면 protectionEnabled 파라미터가 false로 설정됩니다.

시간을 지정하지 않으면 작업이 120분(2시간) 동안 자동으로 보호됩니다.

유형: 정수

필수 항목 여부: 아니요

다음은 각기 다른 기간으로 작업 보호를 설정하는 예입니다.

기본 기간에 작업을 보호하는 방법 예제

이 예제에서는 기본 시간인 2시간으로 작업을 보호하는 방법을 보여줍니다.

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

60분간 작업을 보호하는 방법 예제

이 예제에서는 expiresInMinutes 파라미터를 사용하여 60분 동안 작업을 보호하는 방법을 보여줍니다.

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

24시간 동안 작업을 보호하는 방법 예제

이 예제에서는 expiresInMinutes 파라미터를 사용하여 24시간 동안 작업을 보호하는 방법을 보여줍니다.

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

PUT 요청은 다음과 같은 응답을 반환합니다.

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

작업 축소 보호 응답 파라미터

다음 정보가 작업 스케일 인 보호 엔드포인트(${ECS_AGENT_URI}/task-protection/v1/state)에서 JSON 응답으로 반환됩니다.

ExpirationDate

작업에 대한 보호가 만료되는 Epoch 시간입니다. 작업이 보호되지 않는 경우 이 값은 null입니다.

ProtectionEnabled

작업의 보호 상태입니다. 작업에 대해 축소 보호가 활성화되면 값은 true이고, 그렇지 않으면 false입니다.

TaskArn

컨테이너가 속한 태스크의 전체 Amazon 리소스 이름(ARN)

다음 예제에서는 보호된 작업에 대해 반환된 세부 정보를 보여줍니다.

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

결함이 발생하면 다음 정보가 반환됩니다.

Arn

작업의 전체 Amazon 리소스 이름(ARN)입니다.

Detail

실패와 관련된 세부 정보입니다.

Reason

실패 이유

다음 예제에서는 보호되지 않는 작업에 대해 반환된 세부 정보를 보여줍니다.

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

예외가 발생하면 다음 정보가 반환됩니다.

requestID

예외를 발생시키는 Amazon ECS API 호출에 대한 AWS 요청 ID입니다.

Arn

작업 또는 서비스의 전체 Amazon 리소스 이름(ARN)입니다.

Code

오류 코드입니다.

Message

오류 메시지입니다.

참고

RequestError 또는 RequestTimeout 오류가 표시되면 이는 네트워킹 문제일 수 있습니다. Amazon ECS에 VPC 엔드포인트를 사용해 보세요.

다음 예제에서는 오류 발생 시 반환되는 세부 정보를 보여줍니다.

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

네트워크 문제 또는 Amazon ECS 컨트롤 플레인 중단과 같은 이유로 Amazon ECS 에이전트가 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" } }

Amazon ECS 에이전트가 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" } }