ECS Execを実行するときの注意点
環境作成時の注意点(Cloud9の場合)
作成の方法はググっていただくとして、注意点だけ。
環境作成時の注意点(CLIの場合)
接続するときは毎回credentialsを作らないといけない。
IAMユーザー作成時のアクセスキーとシークレットキーをセットしたcredentialsで、SSM接続時のcredentialsを作る。
このcredentialsが有効なのは一時的なので(デフォだと12時間)、繋がらなくなったら作り直す必要がある。
実行方法
想定されるエラー
An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error. Try again later.
よくわからないけど接続できないときはこのエラーが出るけど、「Try again later.」と言われても待っても解決しない。
実行失敗する時の確認事項
タスクでExecuteCommandは有効になっているか?
aws ecs describe-tasksを実行。
「ExecuteCommandAgent」が「RUNNING」で、「enableExecuteCommand」が「ture」。
なってなかったらtrueにしてタスクを起動しなおす。起動中のtrueの設定は反映されない。
ポリシー許可しているか?
IAMポリシーでコマンドが拒否されてないか?
調べ方:IAM Policy Simulatorで確認する。
https://policysim.aws.amazon.com/
ECSのExecuteCommandが通るか。
通らなかったら、何が悪いか確認できる。
環境確認ツールを使う
amazon-ecs-exec-checker
GitHub - aws-containers/amazon-ecs-exec-checker: 🚀 Pre-flight checks for ECS Exec
このツールでも途中で止まるようなら、都度IAM Policy Simulatorで確認していく。
最終手段
どこも問題無いのに、それでもexecute-commandが通らなければタスクを再起動する。
やり方はECS→クラスター→サービス→更新
「新しいデプロイの強制」にチェックを入れる。
自分もこれで行けた。