kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Terraform で Service Quotas のクォータリクエストを管理する

特にプロダクション環境でウェブサービスを稼働させるときにトラフィックの多さから AWS サービスのクォータ(サービス制限)に該当する可能性がある🛑 AWS Well-Architected Framework (Reliability Pillar) でも REL01-BP01 ~ REL01-BP06 にクォータ関連のベストプラクティスが紹介されている.クォータを理解しつつ,Service Quotas を使ってクォータを管理・モニタリングすることが重要になる👌

docs.aws.amazon.com

クォータリクエストを自動化する

Service Quotas は API / AWS CLI / AWS SDK でサポートされている❗️よって,AWS SDK For Go に依存している Terraform AWS Provider の aws_servicequotas_service_quota リソースを使えば Service Quotas のクォータ増加リクエストを管理できる(命名規則とは言え aws_servicequotas_service_quota はスゴイなぁーw ).

👾 quotas.tf

今回はサンプルとして AWS Lambda 関数のクォータ「同時実行数」をデフォルトの 1000 から 1500 に変更するクォータリクエストを追加する.

# AWS Lambda: Concurrent executions
resource "aws_servicequotas_service_quota" "lambda_concurrent_executions" {
  service_code = "lambda"
  quota_code   = "L-B99A9384"
  value        = 1500
}

Before

After

実行するとクォータリクエストが「保留中」「リクエスト済み」となる.同時にサポートケースも作られて Amazon Web Services: You have opened a new Support case: 000000000000000 というタイトルのメールが届く✉️

AWS CloudFormation 未サポート

少し意外ではあるけど,AWS CloudFormation (と AWS CDK) ではまだ Service Quotas がサポートされてなく,クォータを管理しにくいという課題がある.CloudFormation Public Coverage Roadmap には issue が起票されているけど,特にサポートされる流れではなさそうでツライ😇

github.com

Quota Monitor for AWS

関連するソリューションとして「Quota Monitor for AWS」もある.あくまで個人的にはソリューションは導入したくなく,マネージドサービスとして提供してくれれば使うのに〜という感じではあるけど,運用面まで考慮してニーズに合えば導入してみると良いのかなと思う👌

aws.amazon.com