📝

[小ネタ] ECS タスク起動時にタスクを自己削除できるか

に公開

結論

できました。

検証

以下の設定で検証しました。

  • ECS クラスター: Fargate 起動タイプのデフォルト設定で作成
  • タスク定義
    • タスクロール: AdministratorAccess 権限を付与したロールを指定
    • イメージ URI: amazon/aws-cli:latest
    • エントリポイント: sh,-c
    • コマンド: 以下の通り
yum install -y jq && TASK_ARN=$(curl -s $ECS_CONTAINER_METADATA_URI_V4/task | jq -r .TaskARN) && CLUSTER_ARN=$(curl -s $ECS_CONTAINER_METADATA_URI_V4/task | jq -r .Cluster) && aws ecs stop-task --cluster $CLUSTER_ARN --task $TASK_ARN

上記設定で Fargate のスタンドアロンタスクを起動後、タスクが削除されることを確認できました。
CloudTrail にもタスク自身から StopTask API が実行されていた記録が残っていました。

ECS サービスでの検証

同じタスク定義で ECS サービスでも検証してみました。
ECS サービスでもタスクの起動後にタスクの自己削除は可能でした。

ただし、Auto Scaling によってタスクの停止 -> 起動のループが発生します。
この状態で放置すると課金が続くので検証が終わったらサービスを削除しましょう。

まとめ

今回は ECS タスク起動時にタスクを自己削除できるかという内容を紹介しました。
どなたかの参考になれば幸いです。

Discussion