【トラブル対応】AWS ECS Fargate のサービスクォータ

# 発生状況

- クラウドフォーメーション（Cloud Formation）でファーゲート（Fargate）デプロイに時間が掛かる、タイムアウトエラーで停止する。ロールバックしない／できない。
- コードパイプライン（Code Pipeline）にてデプロイ中に途中エラーで停止する。
- 自動でスケールアウトしない／してくれない。
などなど…

上記ようなケースにおいてＡＷＳ管理コンソールにて「ＥＣＳ > クラスタ > クラスタ名 > サービス > サービス名 > イベント」タブにて、下記メッセージが表示されている場合についての記録。

:::note alert
service クラスターのサービス名 was unable to place a task.  Reason: You've reached the limit on the number of vCPUs you can run concurrently. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide.
:::

# 原因

Ｆａｒｇａｔｅのサービスクォータ制限に引っかかってる可能性が高い。

# 確認ポイント

ＡＷＳ管理コンソール[^region]にて下記のＵＲＬにアクセスする。

https://console.aws.amazon.com/servicequotas/home/services/fargate/quotas

[^region]: リージョンに注意すること。本サービスクォータはリージョン単位での設定となる。

この時「適用されたアカウントレベルのクォータ値」が十分な数字であることを確認する。

通常、この数字は４０００[^default]になってるはずなので該当しないはずある。しかしこの数字が４０００になってないケースに遭遇した。調べたところ同じような事例を発見した[^irregular1][^irregular2]。極端に低い数字になっている場合は上げる必要がある[^nowarry]。

[^default]: [Fargate のサービスクォータが vCPU ベースに変更になります](https://aws.amazon.com/jp/blogs/news/migrating-fargate-service-quotas-to-vcpu-based-quotas/)でのアナウンスによれば４０００と書いてある。
[^irregular1]: [Fargate service quotas downgraded](https://repost.aws/questions/QUkXRQrOAZTTCPTmzVYxjXuA/fargate-service-quotas-downgraded)
[^irregular2]: [Troubleshooting: Unable to place task error](https://www.flightcontrol.dev/docs/troubleshooting/concurrent-cpu-limit)
[^nowarry]: 気がつかない程度に下がってるケースもある。

サービスクォータの値が４０００未満とすることに関するアナウンスは見つからなかったが、この設定が怪しいケースに遭遇したので、この値を良く確認すること。

# 対応方法

[ＡＷＳ管理コンソール](https://console.aws.amazon.com/servicequotas/home/services/fargate/quotas/L-3032A538)にて、
当該サービスクォータの「アカウントレベルでの引き上げをリクエスト」ボタンを押して、必要量を申請する。
あとはＡＷＳサポートセンターからの対応を待つことになるが、例えば４０００より少ない設定がされている時、いきなり４０００の指定が可能（受理してくれる）かは不明。

# 参考文献

- [Fargate のサービスクォータが vCPU ベースに変更になります](https://aws.amazon.com/jp/blogs/news/migrating-fargate-service-quotas-to-vcpu-based-quotas/) [同原文（英語）](https://aws.amazon.com/jp/blogs/containers/migrating-fargate-service-quotas-to-vcpu-based-quotas/)
- [AWS Fargate よくある質問](https://aws.amazon.com/jp/fargate/faqs/) ※トラブルが起きた時に一度確認しておくと良い
- 同様のトラブル報告事例
  - [Fargate service quotas downgraded](https://repost.aws/questions/QUkXRQrOAZTTCPTmzVYxjXuA/fargate-service-quotas-downgraded)
  - [Troubleshooting: Unable to place task error](https://www.flightcontrol.dev/docs/troubleshooting/concurrent-cpu-limit)
- ＡＷＳ管理コンソール
  - [Service Quotas AWS クォータの表示と管理](https://console.aws.amazon.com/servicequotas/home/)
  - [Service Quotas > AWS のサービス](https://console.aws.amazon.com/servicequotas/home/services)
  - [Service Quotas > AWS のサービス > AWS Farget](https://console.aws.amazon.com/servicequotas/home/services/fargate/quotas)
- ＥＣＳのリソース制限に関するドキュメント
  - [AWS Fargate service quotas
](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-quotas.html#service-quotas-fargate)
  - [AWS Fargate throttling quotas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/throttling.html)[^note]
- サービスクォータについてのドキュメント
  - [What is Service Quotas?](https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html)
  - [Requesting a quota increase](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)

[^note]: スロットリングについては現在の設定を確認することができず、変更もサポートセンターから行う必要がある。ここでは詳しくは取り上げない。