2024年3月31日日曜日

Fargate(コンテナのログイン方法について)

Fargateで稼働しているコンテナは、SSMサービスを利用して

ログインすることができる。

ハマってしまったので、備忘録を記載。




ECSのタスクロール用のポリシーを作成:













新たにロールを作成:

①ユースケースの検索窓に「Elastic Container Service」を入力後、「Elastic Container Service Task」を選択

②許可ポリシーに上記で作ったポリシーを指定する



タスク定義の更新を行う:

以下のタスクロールの追加を忘れずに!!














作成済みのサービスの停止 > サービスの再作成を行う

  ->これを行わないと以下のエラーになるので、注意!!




🔸SSMのインストール:

インストール手順①

curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"


インストール手順②

unzip sessionmanager-bundle.zip


インストール手順③

sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin


重要:

cloudshellの場合、再起動を行うこと!!(コマンドが有効化されないようなので)


以下、実施する;

session-manager-plugin


注意:

タイミングで、以下のエラーが出てしまいハマることがあった(Cloud Shellの場合)

     ->何回か、CloudShellの再起動したり、ECSサービスの再起動など(新しいデプロイの強制などの操作を含め)

   を行いやっと改善したりでハマりやすい!

-bash: /usr/local/bin/session-manager-plugin: cannot execute binary file: Exec format error





ECSExecを有効化:

aws ecs update-service --region ap-northeast-1 --cluster クラスタ名 --service サービス名 --enable-execute-command




以下、サービスの更新を行う(多分。実施した方がよい手順)













以下、新しいデプロイの強制にする(多分。実施した方がよい手順)




コンテナにログインする:

aws ecs execute-command --cluster クラスタ名 --container コンテナ名 --task タスクID --command "/bin/sh" --interactive




以下、コンテナにログインした様子(2)







EFS(Dockerfile)の記載について注意

  Dockerfileにefsのマウントパス宛に、ファイルコピーを行うと ECSのサービス作成時に、コンテナのデプロイ失敗に(container run time error)になるので 別経由で、EFSにファイルをコピーした方が良い!! <Dockerfile> ...