こんにちは、フルスタックエンジニアのryuです。
今回の記事は、AWSのFargateのコンテナに接続する方法を解説します。以前は、Fargateののコンテナに接続できませんでしたが、AWS Systems Manager (SSM) の「セッションマネージャー」の仕組みを使うことで接続できるようになりました。面倒だったコンテナの調査がAWS CLIからできます。今回の記事では、コンテナ接続方法を詳しく解説します。
目次
【AWS】Fargateのコンテナに接続する方法を解説
今回の記事では、Fargateのコンテナに接続する方法を解説します。手順は以下の通りです!
- ECSのタスクロールにIAMポリシーを付与する
- AWS CLIをインストール
- Fargateのサービスで「enableExecuteCommand」の設定を有効にする
- 「enableExecuteCommand」の設定を有効にした状態でタスクを再度実行する
- 「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」になっているはずです。
「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のコンテナに接続する方法の解説は終わりです!