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 経路が整ってからサービスをデプロイできたことで解消した。
補足
manifest の network 設定を明示しておくと、VPC 配置方針を先に固定しやすい。
同種のエラーは IAM 権限不足に見えることもあるが、context deadline exceeded が出ている場合はネットワーク到達性を先に疑うと切り分けが速い。