fargateの調査中に便利だったecs execの紹介。
awsのfargateというコンテナを立ち上げるやつ。
サーバーレスで便利という事で使ってみたがコンテナの中身に入らないと中がどうなってるかわかりづらいのでコンテナの中に入れるツール「ecs ecec」というものがあった。
いろいろ導入に苦労したので私がやったやり方を紹介します
まずはaws cliのバージョン確認
aws cli version
aws-cli/2.7.27 Python/3.9.11 Windows/10 exe/AMD64 prompt/off
「amazon-ecs-exec-checker」でecs execが使える状態かチェック。(チェックするツールがある)
下記コマンドで使用可能(特に何かインストールする必要なさそう)
bash <( curl -Ls https://raw.githubusercontent.com/aws-containers/amazon-ecs-exec-checker/main/check-ecs-exec.sh ) <クラスター名> <タスクID>
赤マークが消えたら使用可能。だいたい赤出てる。
こんなやつ詳細
GitHub - aws-containers/amazon-ecs-exec-checker: 🚀 Pre-flight checks for ECS Exec
🚀 Pre-flight checks for ECS Exec. Contribute to aws-containers/amazon-ecs-exec-checker development by creating an account on GitHub.
チェックでだいたい直すところの改善方法を↓に記載しておきます~
Session Manager プラグインのインストール方法
だいたいsession managerのインストールできてないで赤が出てることが多いのでinstall方法乗せておく。なお環境はubuntuなのでご了承ください
ERROR: The request could not be satisfied
“enableExecuteCommand”: false の解消
下記コマンドを実行したときにfalseになる場合
aws ecs describe-services --cluster test-tokunaga-cluster --services test-nginx | grep enableExecuteCommand
下記コマンド実行 を実行
aws ecs update-service --cluster <クラスター名> --service <サービス名> --enable-execute-command
もう一回さっきのコマンドを実行するとtrueになってる
※”enableExecuteCommand”: falseになってる場合は立ち上げてるサービスを強制デプロイで更新するとアクセスできるようになる
チェックを全部クリアできたらようやくfargateのコンテナに接続♬
チェック項目が全部okになったら下記コマンドでコンテナに接続
aws ecs execute-command --cluster <クラスター名> --task <タスクID> --container <コンテナ名> --interactive --command "/bin/sh"
参考サイト
Amazon ECS Execを使ってコンテナ内部でコマンド実行してみた [amazon-ecs-exec-checker] | クラウド・AWSのIT技術者向けブログ SKYARCH BROADCASTING
コメント