スキップしてコンテンツを表示

アクティブなタスク定義が Amazon ECS リソースで使用中かどうかを確認する方法を教えてください。

所要時間2分
0

Amazon Elastic Container Service (Amazon ECS) サービス、タスクセット、デプロイ、スタンドアロンタスクなどを削除する前に、それらにおいて、アクティブなタスク定義が使用中かどうかを把握したいです。

解決策

AWS コマンドラインインターフェイス (AWS CLI) を使用して、Amazon ECS リソースが特定のアクティブなタスク定義を使用しているかどうかを判断します。次に、出力を参考に、アクティブなタスク定義のうち不要なものを特定し、無効にします。タスク定義を削除する前に、タスク定義のステータスを確認するのがベストプラクティスです。

注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI でのエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

AWS CLI を開き、エクスポートコマンドを実行して環境プレースホルダー region_name および task_definition_family を設定します。example_ 値は、お使いの AWS リージョンとタスク定義ファミリーの名前に置き換えてください。

echo "Listing all task definitions that are in use by ECS resources in your Region $region_name"

for cluster_name in $(aws ecs list-clusters --region $region_name --output json | jq -r '.clusterArns[] | split("/") | .[1]')
do

  for service_name in $(aws ecs list-services --cluster $cluster_name --region $region_name --output json | jq -r '.serviceArns[] | split("/") | .[2]')
  do
    taskdef_arn=$(aws ecs describe-services --cluster $cluster_name --services $service_name --region $region_name --output json | jq -r '.services[].taskDefinition')
    echo "Service Name: $service_name | Task Definition: $taskdef_arn | Cluster: $cluster_name"
  done

  for task_id in $(aws ecs list-tasks --cluster $cluster_name --region $region_name --family $task_definition_family --output json | jq -r '.taskArns[] | split("/") | .[2]')
     do

     result=$(aws ecs describe-tasks --tasks $task_id --cluster $cluster_name --region $region_name --output json)

     task_definition=$(echo $result | jq -r '.tasks[].taskDefinitionArn')

     task_group=$(echo $result | jq -r '.tasks[].group')

     echo "Task ID: $task_id | Group: $task_group | Task Definition: $task_definition | Cluster: $cluster_name"

    done

done

次の出力例は、使用中のタスク定義のリストを示しています。

Listing all task definitions that are in use by ECS resources in your Region example_region

Service Name: test123 | Task Definition: arn:aws:ecs:ap-southeast-1:1234567890:task-definition/nginx-fargate:16 | Cluster: enhanced-architecture-fargate
Service Name: test-ec2 | Task Definition: arn:aws:ecs:ap-southeast-1:1234567890:task-definition/httpd-ec2:4 | Cluster: enhanced-architecture-fargate
Task ID: 6af9a36954cb4ef0b238926135bc606b | Group: service:test123 | Task Definition: arn:aws:ecs:ap-southeast-1:1234567890:task-definition/nginx-fargate:16 | Cluster: enhanced-architecture-fargate
Task ID: e49c6b174d2b47789ac50597256afb88 | Group: family:nginx-fargate | Task Definition: arn:aws:ecs:ap-southeast-1:1234567890:task-definition/nginx-fargate:16 | Cluster: enhanced-architecture-fargate
Task ID: f1ac98cc3b37494ea681832f52d49a05 | Group: family:nginx-fargate | Task Definition: arn:aws:ecs:ap-southeast-1:1234567890:task-definition/nginx-fargate:16 | Cluster: enhanced-architecture-fargate
Service Name: test123 | Task Definition: arn:aws:ecs:ap-southeast-1:1234567890:task-definition/nginx-fargate:16 | Cluster: test1
Task ID: 95112b2b561b4bb98aff3877548a60ff | Group: service:test123 | Task Definition: arn:aws:ecs:ap-southeast-1:1234567890:task-definition/nginx-fargate:16 | Cluster: test1

オプション: 特定のリージョンで使用中のすべてのタスク定義を一覧表示するには、list-tasks API コールから --family オプションを削除します。ページ分割オプションを使用すると、リージョンの AWS アカウントにある多数のタスク定義を一覧表示できます。

関連情報

削除をブロックする可能性がある Amazon ECS リソース

Amazon ECS タスク定義パラメータ

AWS公式更新しました 2年前
コメントはありません