タスクスケールインプロテクションのエンドポイント - Amazon Elastic Container Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

タスクスケールインプロテクションのエンドポイント

Amazon ECS コンテナエージェントは AWS APIsGetTaskProtectionUpdateTaskProtection を使用してタスクのスケールイン保護を提供します。障害理由のリストについては、「API failure reasons」(API 障害理由) を参照してください。

タスクのスケールイン保護に関する考慮事項の詳細については、「タスクスケールイン保護に関する考慮事項」を参照してください。

タスクスケールインプロテクションのエンドポイントパス

Amazon ECS コンテナエージェントは、ECS_AGENT_URI 環境変数を Amazon ECS タスクのコンテナに自動的に挿入して、コンテナエージェント API エンドポイントとやり取りする方法を提供します。

コンテナでは、次のタスクスケールインプロテクションエンドポイントパスを使用できます: ${ECS_AGENT_URI}/task-protection/v1/state

コンテナ内からこの URI への PUT リクエストにより、タスクのスケールイン プロテクションが設定されます。この URI への GET リクエストは、タスクの現在のプロテクションステータスを取得します。

タスクスケールイン保護の設定

次のリクエストパラメータで、${ECS_AGENT_URI}/task-protection/v1/state エンドポイントを使用してタスクスケールインプロテクションを設定できます。

保護

ProtectionEnabled

true を指定するとタスクに保護対象としてマークを付け、false を指定すると保護を解除して、タスクが終了できるようになります。

型: ブール値

必須: はい

ExpiresInMinutes

protectionEnabledtrue に設定する場合、expiresInMinutes パラメータを使用してタスクを保護する必要がある期間を指定できます。最小 1 分から最大 2,880 分 (48 時間) まで指定できます。この期間中、自動スケーリングサービスまたはデプロイからのスケールインイベントによってタスクが終了することはありません。この時間が経過すると、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" } }

タスクスケールイン保護ステータスの取得

次の情報が、JSON レスポンスタスクのスケールインプロテクションエンドポイント ${ECS_AGENT_URI}/task-protection/v1/state から返されます。

保護

ExpirationDate

タスクの保護が期限切れになるエポックタイム。タスクが保護されていない場合、この値は 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" } }