2026年1月5日

ECS FargateでSSM取得がタイムアウトしたときの整理

業務でAWS Copilotを使ってる。(これまではECS管理にはterraform+ecspressoの構成が多かった)
Easy > Simpleな設計、たまにAWS Copilotの気持ちにならないと難しい場面がある。

AWS Copilot で既存クラスタにサービス追加した際、デプロイ時に次のエラーが出た。

ResourceInitializationError: unable to pull secrets or registry auth ... operation error SSM: GetParameters ... context deadline exceeded

前提

  • ECS Fargate を利用
  • 既存クラスタに新規サービスを追加
  • Copilot CLI を利用
  • タスクは Private Subnet に配置したい

事象

copilot svc deploy 実行時に、SSM Parameter Store の取得でタイムアウトしてデプロイ失敗。

一方、copilot deploy --deploy-env ではエラーが出ずデプロイできた。

原因

ECS タスク(awsvpc で付与されたタスク ENI)から、SSM Parameter Store の API エンドポイントへネットワーク到達できていなかった。
結果として GetParameters がタイムアウトした。

要するに、Private Subnet 側から外向き通信するための経路が不足していた。

解消までの流れ

copilot deploy --deploy-env を使うと、先に environment 側の作成・更新(copilot env init / copilot env deploy 相当)が走る。
この過程で NAT が先に用意され、タスクから SSM へ到達できる状態になった。

今回のケースでは、Environment 側で NAT 経路が整ってからサービスをデプロイできたことで解消した。

補足

manifestnetwork 設定を明示しておくと、VPC 配置方針を先に固定しやすい。

同種のエラーは IAM 権限不足に見えることもあるが、context deadline exceeded が出ている場合はネットワーク到達性を先に疑うと切り分けが速い。