Cloud9からSSM経由でECS上のFargateのコンテナにECS Execを使ってアクセスしたので手順をメモ
Cloud9に「session-manager-plugin」をインストール
デフォルトではこれはインストールされていないので、まずは「session-manager-plugin」をインストールします。Cloud9のOSによってコマンドが違うので、まずはベースとなっているプラットフォームを確認する
確認出来たら以下のリンクから自分のプラットフォームが該当するリンクを押下。今回の自分のケースだと赤枠のリンクになるのでそちらへ移動。
すると「session-manager-plugin」のインストールコマンドがあるので、コピーボタンを押してクリップボードにコピーし、Cloud9のターミナルに貼りつけて実行します。ちなみにAmazon Linux2以降でないと機能しないみたいなので注意。
するとダーっと流れてすぐにインストールが完了。
ECS Execが実行できるようにサービス/タスクの権限/設定を更新
ECSのタスク定義から、「タスクロール」を開きます。※ちなみに「タスク実行ロール」というのはタスクを起動するときに必要な権限を持たせるロールで、「タスクロール」はタスク自体が実行に必要な権限を持たせるロール、という役割の違いがある
「ポリシーを追加」で「AmazonSSMFullAccess」を検索し追加します。
その後Cloud9のターミナルで以下のコマンドを実行して、ECS execを有効化してやる
aws ecs update-service --region ap-northeast-1 --cluster [クラスター名] --service [サービス名] --enable-execute-command
タスクの再起動
ECS execの有効化は既存のタスクには適用されず、設定後新たに起動したタスクでのみ適用されるため、タスクを再起動します。ECSのサービスの画面から「サービスを更新」ボタンを押下し、「新しいデプロイの強制」にチェックを入れて更新します。
タスクが再起動されたらようやく準備完了です。
ECS execでコンテナに入る
まずはアクセスしたいタスクのタスクIDをクリップボードにコピーします。
それからCloud9のターミナルで以下のコマンドを実行([ ]内は自身の環境に合わせて適宜置き換え)。コンテナ名は↑のタスクIDのリンクを押下した先の最下部に書いてます。
aws ecs execute-command --region ap-northeast-1 --cluster [クラスター名] --task [タスク ID] --container [コンテナ名] --interactive --command "/bin/sh"
接続できると以下のようなセッションIDが表示されます。
無事接続できましたでしょうか、お疲れ様でした!