障害原因切り分けのためECS上のコンテナにログインを試みた際、少し躓きがありましたので気づきを備忘録化。
TL;DR
-
こちらのチェッカーシェルでどこが不足しているのか網羅的に確認しながら進めると効率的。(急がば回れ)
-
Fargate環境のステータス遷移が非同期なので、リトライ時はあせらず少し待ってみる。
実行ロールに権限が付与未済
対象ロールは従前のチェッカーシェルを使うと表示可能です。
エラーログ
An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error. Try again later.
以下SSMエージェント実行用ポリシーを付与
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
コマンド実行時のタスクIDの設定誤り
エラーログ
An error occurred (InvalidParameterException) when calling the ExecuteCommand operation: task length should be one of [32,36]
些末ですがタスクオプションにタスク定義名(bazTask)を入れていたことにより発生。TaskIDを指定するべきでした。
修正前
aws ecs execute-command \
--cluster fooCluster \
--container barContainer \
--task bazTask \
--command "/bin/sh" \
--interactive
修正後
aws ecs execute-command \
--cluster fooCluster \
--container barContainer \
--task c267ea6ca1144e11917459fa6060c20b \
--command "/bin/sh" \
--interactive
指定したタスクIDが実行中のタスクIDと違う
aws ecs list-tasksを実行してタスクIDを確認しながら操作していましたが、最新のタスクIDが拾えていなかったようで少し待ったり、マネジメントコンソールと併用する形で操作ながら対応。
エラーログ
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.
An error occurred (InvalidParameterException) when calling the ExecuteCommand operation: The execute command failed because execute command was not enabled when the task was run or the execute command agent isn’t running. Wait and try again or run a new task with execute command enabled and try again.
TaskIDの表示方法
aws ecs list-tasks --cluster fooCluster
{
"taskArns": [
"arn:aws:ecs:ap-northeast-1:<省略>/c267ea6ca1144e11917459fa6060c20b"
]
}
参考にさせていただいたサイト(ありがとうございます)