MeWrite Docs

AWS: ThrottlingException - Rate exceeded

AWS APIのレート制限に達した際のスロットリングエラーの原因と解決策

概要

AWS APIの呼び出しレートが制限を超えた際に発生するエラーです。

エラーメッセージ

``` ThrottlingException: Rate exceeded ```

原因

  1. API呼び出し頻度が高すぎる: 短時間に大量のリクエスト
  2. バーストリクエスト: 同時に多数のリクエスト
  3. アカウント全体の制限: 他のアプリケーションとの競合
  4. リージョン固有の制限: 特定リージョンでの制限

解決策

1. Exponential Backoffを実装

```python import time import random import boto3 from botocore.exceptions import ClientError

def call_with_retry(func, max_retries=5): for attempt in range(max_retries): try: return func() except ClientError as e: if e.response[‘Error’][‘Code’] == ‘ThrottlingException’: wait = (2 ** attempt) + random.uniform(0, 1) time.sleep(wait) else: raise raise Exception(“Max retries exceeded”)

使用例

ec2 = boto3.client(’ec2’) result = call_with_retry(lambda: ec2.describe_instances()) ```

2. AWS SDKの自動リトライ設定

```python from botocore.config import Config

config = Config( retries={ ‘max_attempts’: 10, ‘mode’: ‘adaptive’ # または ‘standard’ } ) client = boto3.client(’ec2’, config=config) ```

3. リクエストをバッチ化

```python

悪い例: 1件ずつAPI呼び出し

for instance_id in instance_ids: ec2.describe_instances(InstanceIds=[instance_id])

良い例: バッチで呼び出し

ec2.describe_instances(InstanceIds=instance_ids[:100]) ```

4. Service Quotasで上限緩和申請

```bash aws service-quotas request-service-quota-increase
–service-code ec2
–quota-code L-1216C47A
–desired-value 100 ```

よくある間違い

  • リトライ間隔を固定値にする
  • エラー種別を確認せずにリトライ
  • 制限緩和せずにワークアラウンド

関連エラー

関連エラー

AWS の他のエラー

最終更新: 2025-12-10