AWS ECS(Elastic Container Service)でコンテナを運用している場合、デバッグやトラブルシューティングのためにコンテナ内部にアクセスする必要が出てきます。
ECS Execを使用してコンテナに直接アクセスする方法を解説します。
ECS Execとは
ECS Execは、AWS ECSの実行中のコンテナに直接SSHのような形でアクセスできる機能です。この機能により、以下のようなことが可能になります。
- コンテナ内でのコマンド実行
- ログファイルの直接確認
- プロセスの状態確認
- ファイルシステムの調査
前提条件
- AWS CLIがインストールされていること
- AWSプロファイルが設定されていること
- 対象のECSタスクでECS Execが有効になっていること
- 適切なIAM権限が付与されていること
手順
1. AWS認証情報の設定
開発環境用のプロファイルを設定します:
1 | $ export AWS_PROFILE=${profile} |
2. 必要な情報の確認
ECS Execを使用するために必要な情報は以下の3つです:
- クラスター名
- タスクID
- コンテナ名
これらの情報は、AWS Management ConsoleのECSダッシュボードから確認できます。
1 | https://ap-northeast-1.console.aws.amazon.com/ecs/v2/clusters/[クラスター名]/services |
3. ECS Execの実行
以下のコマンドを使用してコンテナにアクセスします:
1 2 3 4 5 6 7 | aws ecs execute-command \ --region ap-northeast-1 \ --cluster [クラスター名] \ --task [タスクID] \ --container [コンテナ名] \ --interactive \ --command "/bin/sh" |
4. シェルの変更
コンテナに接続後、より使いやすいbashシェルに切り替えます。
1 | bash |
接続エラーが発生する場合
1 2 | An error occurred (InvalidParameterException) when calling the ExecuteCommand operation: The execute command failed because execute command was not enabled on the task. |
- タスク定義でECS Execが有効になっているか確認
- IAM権限が適切に設定されているか確認