0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CloudFormationでService Quota Exceeded Exceptionが発生した際の解決策

Posted at

はじめに

CloudFormationでService Quota Exceeded Exceptionのエラーが発生した場合の対処方法をまとめていきます。

遭遇した状況

大量のCloudWatchアラームをでCloudFormationでデプロイしたところ、Service Quota Exceeded Exceptionエラーが発生・・・

原因

「Rate exceeded」(レート超過) エラーは、AWS のサービスに対する API コールが許可された API リクエストの最大数を超過し、API コールがスロットリングされた場合に発生します。通常、これらのエラーは一時的なもので、API コールが少なくなると自動的に解決されます。

つまりどういうこと?

AWSがCloudFormationからリソースを作成する際にAPIコールの数が多すぎてスロットリングされたということです。この辺はリソースを作成する際にCloudFormationがよろしく調整してくれるのかなと思っていたのですが、あまりにも多すぎるとだめみたいですね。

対策

オフィシャルに公開されている情報は以下です。

・エクスポネンシャルバックオフを実装する
・スタックを 1 つずつ作成または更新する
・DependsOn 属性を使用する
・クォータの引き上げをリクエストする

今回は、AWS API エンドポイントを直接叩いているわけではないので、エクスポネンシャルバックオフは除外、スタックも1つなので、スタックを 1 つずつ作成または更新するも除外、クォータの引き上げをリクエストするも、一時的なものなので除外します。
そのため、DependsOn属性を利用することとします。

Depends on属性とは?

 DependsOn 属性を使用すると、特定のリソースが他のリソースに続けて作成されるように指定できます。DependsOn 属性をリソースに追加した場合、そのリソースの作成は必ず、DependsOn 属性で指定したリソースの作成後に行われます。

つまり、対象のリソースの作成の前提条件として別のリソースの作成完了を条件とすることができるものです。これを追加すれば、作成タイミングをコントロールできるので、同時に作成される量を減少させ、レート制限にも対応できそうです。

CPUAlarm:
  Type: AWS::CloudWatch::Alarm
  DependsOn: XXXAlarm
  Properties:
    AlarmDescription: CPU alarm for my instance
    AlarmActions:
    - Ref: "logical name of an AWS::SNS::Topic resource"
    MetricName: CPUUtilization
    Namespace: AWS/EC2
    Statistic: Average
    Period: '60'
    EvaluationPeriods: '3'
    Threshold: '90'
    ComparisonOperator: GreaterThanThreshold
    Dimensions:
    - Name: InstanceId
      Value:
        Ref: "logical name of an AWS::EC2::Instance resource"

# まとめ
CloudFormationでもレート制限がでることがあります。
DependsOnやスタックの分割などで工夫していきましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?