非常にシンプルな Web アプリケーションを AWS Fargate にデプロイしようとしています。
アプリケーションのバックエンドの Docker イメージを ECR にプッシュし、コンテナの Fargate タスク定義を設定しようとしています。タスクのすべてのプロパティを定義し、設定は非常に簡単ですが、タスクが作成されず、常にエラーが発生します。
無効なリクエストが提供されました: TaskDefinition を作成: Fargate では、ECR イメージをサポートするためにタスク定義に実行ロール ARN が必要です。(サービス: AmazonECS、ステータス コード: 400、エラー コード: ClientException、リクエスト ID: 、プロキシ: null)" (RequestToken: 、HandlerErrorCode: InvalidRequest)
ECRイメージがあり、Fargateに必要なIAMロールを作成して選択していることはわかっています(このドキュメント) ですが、まだ文句を言っています。
当初は EC2 起動タイプでタスクを作成し、問題はありませんでしたが、コストとシンプルさの理由から Fargate 起動タイプを使用することにしました。
他に何をすればいいですか?
答え1
この問題に遭遇しましたが、AWS で解決できました。どうやら、タスク定義に GUI を使用するときに IAM ロールに関連付けられた権限を追加するとバグが発生するようです。
これを解決するには、Cloud Formationに移動して設定ファイルを指定します。失敗したタスク定義がそこに表示されます。タスク定義に関連付けられたスタックをクリックし、アップデート/デザイナーでテンプレートを編集する。
JSONを編集してこれを追加します"TaskRoleArn": "your task role"
{
[…]
"executionRoleArn" : "the-same-string-that-taskRoleArn-is-set-to"
[…]
}
それで問題は解決するはずです
答え2
これは新しい ECS UI のバグのようです。
左側のサイドバーから「新しい ECS エクスペリエンス」オプションのチェックを外して古い UI に戻すと、動作するはずです。
答え3
「更新」ボタンが無効になっています。有効にする方法や他の回避策はありますか?数日前にFargateサービス定義を作成できたので、Cloud Formationのテンプレートがあります。