こんにちは、久保田です。
Amazon Elastic Container Service (以下、ECS)で、稼働中のコンテナにアクセスできるという便利機能のECS Execが、コンソールから利用可能になったとのアップデート情報がありましたので、さっそく実際に試してみました。 aws.amazon.com
前提条件
- VPC や ECSクラスターは作成済み
- ECSコンテナはパブリックサブネットに配置
※今回の作業には必須ではないですが、検証用にAWS CLIを実施している箇所がございます。 利用したAWS CLIのバージョン情報は下記のとおりです。
$ aws --version aws-cli/2.28.26 Python/3.13.7 Windows/11 exe/AMD64
やってみる
①タスク定義の作成
本検証で利用するタスク定義を作成します。
今回は起動タイプにFargateを選択しました。
タスクロール(起動したコンテナが持つ権限)にはECS Execができる権限をもったロールを指定してください。

②サービスの作成
先ほど作成したタスク定義を利用してアプリケーションを起動させるECSサービスを作成します。
また、環境設定の項目に新しくできた「トラブルシューティングの設定」で「ECS Exec をオンにする」にチェックを入れます。

なお、①タスク定義の作成にて、タスクロールの設定が誤っている場合は、ここでエラーが出ます。

③Execの有効化
サービスが立ち上がり、対象のタスクの詳細を確認するとECS Execが「オンになっています」と表示されます。
また、コンテナの項目には今回のアップデートで追加された「接続」というボタンがありますが、そちらも有効化されています。

もし②で有効化の設定をしなかった場合は、ECS Execが「オフになっています」と表示され、コンテナの項目の「接続」ボタンも非活性になっています。

ちなみに、今まではAWS CLIを用いてECS Execの有効化をする作業が必要だったのですが、②の設定をすることで不要になったようです。 今まで通り自身のターミナルでAWS CLIを用いてECS Execを有効化し、その後サービスの再起動をしても特に問題はないです。
$ aws ecs update-service --cluster クラスター名 --service サービス名 --enable-execute-command
④コンソールからECS Execを利用してコンテナに接続
対象コンテナを選択した状態で「接続」をクリックすると、
AWS CloudShellが起動し、ECS Execが実行する画面に切り替わります。
実行すると、無事コンテナにアクセスできました。

(おまけ)従来通りAWS CLIでECS Execを利用してコンテナに接続したいとき
接続ボタンの横の▼を押すと、「AWS CLI コマンドをコピー」と表示されます。
ここをクリックすると「ターミナル(Unix/Linux)」「PowerShell(Windows)」のそれぞれのコマンドが出てきます。
従来通り自身のターミナルでCLIを使ってアクセスしたい際にも、この機能を利用することでコマンドを自作しなくてよくなるので便利です。

まとめ
今までAWS CLIコマンド実行時には、毎回タスクIDを調べないといけなかったので、便利といえどECS Execをするのは少し手間でした。 また、ECS Execを利用する前に、今まではCLIからECS Execを有効化してタスクを再起動する必要があったのですが、それも不要になりました。 今回のアップデートでコンソールからかなり簡単にECS Execが利用できるようになったので、トラブルシューティングの手間がグッと縮められるかと思います。