ECSのRunTaskで出たAccessDeniedException、原因はFargate platform version 1.3.0の廃止だった

  • AWS
  • ECS
  • Fargate

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

Lambda経由でECSのRunTaskを叩いている処理で、いきなり以下のエラーが出るようになった。

AccessDeniedException: You do not have authorization to access the specified platform.

何が起きたか

エラーコードがAccessDeniedExceptionなので、最初はIAMの権限不足を疑った。実際に確認したところecs:RunTaskとecs:ListTasksは付与済みで、IAMポリシー側に問題は見当たらなかった。

launchTypeはFARGATE、コンテナはLinux(X86_64)。ここまでは特に変わったことをしていない構成。

原因

タスク起動時にplatformVersionを1.3.0に明示指定していたのが原因だった。

AWS Fargateの Linux platform version 1.3.0 は2026年3月16日付けで「Retired(廃止)」になっていて、それ以降はplatformVersion: 1.3.0を指定したRunTaskやCreateServiceが呼べなくなる。既存の稼働中タスクはそのまま動き続けるが、新規のタスク起動やサービス作成だけができなくなるという仕様。

AccessDeniedExceptionというエラーコード名に反して、実態はIAM権限ではなく「廃止済みプラットフォームバージョンへのアクセス拒否」だった。エラーメッセージのspecified platformはここでいうplatformVersionのことを指していたことになる。

なお廃止スケジュールとしては以下の流れだったらしい(AWS公式のリタイアメントノートベース)。

  • 2026/03/02: 1.3.0を使っている既存サービスに対する強制アップデート開始
  • 2026/03/16: 1.3.0が「Retired」に。以降、新規タスク起動・新規サービス作成が不可に
  • 2026/03/31: 1.3.0で稼働中の残タスクを強制終了

対処

platformVersionを1.4.0に変更した。

platformVersion: '1.3.0'
platformVersion: '1.4.0'

LATESTを指定する手もあるが、LATESTが指すバージョンは将来また変わる可能性があるので、挙動を固定したいなら明示的に1.4.0を指定しておく方が安全そう。

差分で気にしたところ

1.3.0から1.4.0への移行で挙動が変わる点がいくつかあるらしいので、念のため以下を確認した。

  • awsvpcTrunkingの扱い
  • エフェメラルストレージの上限(1.4.0では最大200GiBまで指定可能)
  • タスクメタデータエンドポイントがv4になる

今回のタスク定義ではこのあたりの機能に依存していなかったので、platformVersionの書き換えだけで直った。