aws

【AWS】Fargateのコンテナに接続する方法を解説

こんにちは、フルスタックエンジニアのryuです。

今回の記事は、AWSのFargateのコンテナに接続する方法を解説します。以前は、Fargateののコンテナに接続できませんでしたが、AWS Systems Manager (SSM) の「セッションマネージャー」の仕組みを使うことで接続できるようになりました。面倒だったコンテナの調査がAWS CLIからできます。今回の記事では、コンテナ接続方法を詳しく解説します。

【AWS】Fargateのコンテナに接続する方法を解説

今回の記事では、Fargateのコンテナに接続する方法を解説します。手順は以下の通りです!

  1. ECSのタスクロールにIAMポリシーを付与する
  2. AWS CLIをインストール
  3. Fargateのサービスで「enableExecuteCommand」の設定を有効にする
  4. 「enableExecuteCommand」の設定を有効にした状態でタスクを再度実行する
  5. 「aws ecs execute-command」でコンテナに接続する

では、詳しく解説します!

ECSのタスクロールにIAMポリシーを付与する

まず、ECSのタスクロールにIAMポリシーを付与します。付与するポリシーは、以下の4つです。

        "ssmmessages:CreateControlChannel"
        "ssmmessages:CreateDataChannel"
        "ssmmessages:OpenControlChannel"
        "ssmmessages:OpenDataChannel"

ssmmessagesの権限をすべて付与します。こちらの内容で付与を行います。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssmmessages:CreateControlChannel",
        "ssmmessages:CreateDataChannel",
        "ssmmessages:OpenControlChannel",
        "ssmmessages:OpenDataChannel"
      ],
      "Resource": "*"
    }
  ]
}

IAMポリシーの設定方法については、こちらの記事で詳しく解説しております。

・関連記事:【AWS】IAMポリシーの作成方法を解説【カスタムポリシーを作成して権限管理をしてみよう】

AWS CLIをインストール

次にAWSのCLIをインストールします。既にインストールしている方は次の手順に進んでください。

インストール手順については、こちらの公式ドキュメントを参考にしてください。

AWS CLI バージョン 2 のインストール、更新、アンインストール – AWS Command Line Interface (amazon.com)

以下のコマンドが実行できたらAWS CLIがインストールできています。

$aws --version

のちにSession Manager プラグインを使用するので、こちらもインストールしておきましょう。インストール方法はこちらのドキュメントを参考にしてください。

 AWS CLI 用の Session Manager プラグインをインストールする

Fargateのサービスで「enableExecuteCommand」の設定を有効にする

次は、Fargateのサービスで「enableExecuteCommand」の設定を有効にします。

Fargeteの「enableExecuteCommand」の設定はAWS CLIからコンテナに接続するために必要な設定です。しかし、AWSコンソール上からは設定できないので、コマンドから設定する必要があります。

「enableExecuteCommand」の設定を有効にするコマンド

「enableExecuteCommand」の設定を有効にするコマンドはこちらです。

$ aws ecs update-service \
    --cluster example-cluster \
    --service example-service \
    --enable-execute-command

「enableExecuteCommand」の設定を無効にするコマンド

「enableExecuteCommand」の設定を無効にするコマンドはこちらです。

$ aws ecs update-service \
    --cluster example-cluster \
    --service example-service \
     --disable-execute-command

fargateのコンテナにアクセスしない場合は「enableExecuteCommand」の設定を無効にしておきましょう。

「enableExecuteCommand」の設定を有効にした状態でタスクを再度実行する

次は、「enableExecuteCommand」の設定を有効にした状態でタスクを再度実行します。

fargateのコンソール画面から「タスク」タブをクリックして、「新しいタスクの実行」をクリックします。

新しいタスクの実行

タスクを起動させる設定は、特に今まで通りで問題ありません。タスクが起動していることを確認しましょう。ステータスが「RUUNING」になっているはずです。

fargateのタスクのステータス

「aws ecs execute-command」でコンテナに接続する

最後に「aws ecs execute-command」でコンテナに接続します。コマンドは以下の通りです。

aws ecs execute-command \  
    --cluster [クラスタ名] \
    --task [タスクの番号] \
    --container [コンテナ名] \ 
    --interactive \
    --command "/bin/sh"

タスクの番号は、fargateのコンソール画面から確認できる、英数字の羅列です。

タスクの番号

“–command”でコンテナ内で実行するコマンドを指定します。「/bin/bash」や「sh」を指定することでコンテナ内のターミナルに接続することができます。

コマンドを実行すると、下記画面のようにコンテナを操作することができます。

fargateのコンテナに接続成功

これでfargateのコンテナに接続する方法の解説は終わりです!

About me
大手メーカのIT部門→上場ベンチャーでフルスタックエンジニアやってます。エンジニア歴は8年目。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!

UdemyでIT講座をチェック!

  • セールだと1500円前後!
  • 無料サンプル講義動画・無料講義動画あり!
  • 気に入らなければ30日間返金保証!