AWS ECS タスクがプロビジョニングで停止しています

AWS ECS タスクがプロビジョニングで停止しています

キャパシティープロバイダーとサービスを備えた ECS クラスターがあります。キャパシティープロバイダーは自動スケールグループを実行し、このグループのインスタンスが 1 つ起動すると、最後に利用可能な ECS インスタンスがあることがわかります。実際、SSH 経由でそれらに接続できます。

ERS リポジトリの Docker イメージに基づく新しいタスクを作成するため、サービスも正常に実行されます。ただし、タスクは「プロビジョニング」から渡されることはなく、タスクを開くと、タスクのコンテナーが無効でロード中であることがわかります。インスタンスに入ると、またはを実行しても同じ Docker インスタンスが表示されますdocker psdocker ps -aエージェントを実行すると、次docker exec id_docker /agentのようになります。

level=info time=2022-05-02T21:16:05Z msg="Successfully got ECS instance credentials from provider: EC2RoleProvider" module=instancecreds.go
level=info time=2022-05-02T21:16:05Z msg="Starting Amazon ECS Agent" version="1.61.0" commit="05730614"
level=info time=2022-05-02T21:16:05Z msg="Loading configuration"
level=info time=2022-05-02T21:16:05Z msg="Successfully got ECS instance credentials from provider: EC2RoleProvider" module=instancecreds.go

試してみるとdocker exec id_docker bashエラーが発生します:

OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "bash": executable file not found in $PATH: unknown

ここで何が起こっているのですか? 何か手がかりはありますか?

答え1

実際、wsaを実行した後、ecs-agent ができましたdocker ps。これは、Amazon がコンテナを制御するために作成するものです。これが行き詰まった部分でした。実際、docker は実行されていませんでした。

これを解決するには、タスクを作成するときに、コンテナ オプションで、ホストにリダイレクトするコンテナのポートを選択するときに、ホストの値に 0 を入力します。たとえば、ポート 22 を 22 にリダイレクト -> 0 から 22。これは、ECS の動的ポート マッピングです。

関連情報