ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
エラー内容
RequestThrottled: Request was throttled.
AWS Access Key ID: AKIAXXXXXXXXXXXXXXXX
You are submitting requests too quickly. Please slow down.
Error Code: Throttling / ThrottlingException / TooManyRequestsException / RequestLimitExceeded
HTTP Status: 400 / 429 / 503
名前は API ごとに異なります(Throttling / ThrottlingException / TooManyRequestsException / RequestLimitExceeded など)が、原因と対処は同じです。
原因の切り分け
| 原因 | 確認 | 対処 |
|---|---|---|
| 短時間バースト | CloudWatch でリクエスト数のスパイク確認 | 指数バックオフリトライ |
| 並列度過多 | ECS / Lambda 同時実行数を確認 | 並列度制限 / バッチ化 |
| アカウント上限到達 | Service Quotas で現在値確認 | 上限緩和申請 |
| 特定 API の制限(例: STS AssumeRole) | 該当 API ドキュメントの TPS 確認 | キャッシュ / 集約 |
| 他テナント・他リソースとの共有 | S3 / DynamoDB のホットパーティション | キー分散 / リシャード |
対処1: AWS SDK のリトライ設定を強化
AWS SDK はデフォルトで指数バックオフリトライを持っています。回数や戦略を調整できます。
AWS SDK for Java (v2)
import software.amazon.awssdk.core.retry.RetryPolicy;
import software.amazon.awssdk.core.retry.RetryMode;
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
S3Client.builder()
.overrideConfiguration(ClientOverrideConfiguration.builder()
.retryPolicy(RetryPolicy.builder()
.numRetries(10) // 既定 3 → 10
.retryMode(RetryMode.ADAPTIVE) // ★ 推奨
.build())
.build())
.build();
// RetryMode:
// LEGACY - 旧デフォルト
// STANDARD - 新デフォルト(指数バックオフ + ジッター)
// ADAPTIVE - スロットリング検知時に自動でレート抑制
AWS SDK for Python (boto3)
import boto3
from botocore.config import Config
config = Config(
retries = {
'max_attempts': 10,
'mode': 'adaptive', # standard / adaptive / legacy
}
)
s3 = boto3.client('s3', config=config)
AWS SDK for JavaScript (v3)
import { S3Client } from '@aws-sdk/client-s3';
import { ConfiguredRetryStrategy } from '@aws-sdk/util-retry';
const client = new S3Client({
maxAttempts: 10,
retryStrategy: new ConfiguredRetryStrategy(
10, // 最大リトライ
(attempt) => 100 + attempt * 1000 // バックオフ ms
),
});
対処2: 自前で指数バックオフ実装
SDK でカバーしきれない場合や、自前 HTTP クライアントを使う場合:
import time
import random
from botocore.exceptions import ClientError
def call_aws_with_backoff(fn, max_retries=5):
"""指数バックオフ + ジッター付きリトライ"""
for attempt in range(max_retries):
try:
return fn()
except ClientError as e:
code = e.response['Error']['Code']
if code in ('Throttling', 'ThrottlingException',
'TooManyRequestsException', 'RequestLimitExceeded',
'RequestThrottled'):
if attempt == max_retries - 1:
raise
# 指数バックオフ + フルジッター
base = 0.5 * (2 ** attempt)
sleep = random.uniform(0, base)
time.sleep(sleep)
continue
raise
raise RuntimeError("max retries exceeded")
# 利用
result = call_aws_with_backoff(lambda: s3.list_objects_v2(Bucket='mybucket'))
対処3: 並列度を制限
from concurrent.futures import ThreadPoolExecutor
import boto3
s3 = boto3.client('s3')
# ❌ 1000 並列でスロットリング確定
with ThreadPoolExecutor(max_workers=1000) as ex:
list(ex.map(lambda key: s3.delete_object(Bucket='b', Key=key), keys))
# ✅ 10 並列に制限
with ThreadPoolExecutor(max_workers=10) as ex:
list(ex.map(lambda key: s3.delete_object(Bucket='b', Key=key), keys))
# ✅ バッチ API を使う(最強)
batch = [{'Key': k} for k in keys[:1000]]
s3.delete_objects(Bucket='b', Delete={'Objects': batch})
対処4: Service Quotas で上限緩和
頻繁にスロットリングする場合は、AWS コンソールから上限緩和を申請:
- AWS コンソール → Service Quotas を開く
- 該当サービス(例: EC2)を選択
- 該当クォータ(例: API requests per second)を選択
- 「クォータの引き上げをリクエスト」
- 承認まで数時間〜数日
サービス別の主な制限
| サービス | 制限の例 | 緩和方法 |
|---|---|---|
| S3 | 3500 PUT/s, 5500 GET/s per prefix | ★ プレフィックス分散 |
| DynamoDB | WCU/RCU、パーティション 1000 WCU 制限 | キー設計でホット回避 + Auto Scaling |
| STS AssumeRole | アカウント単位の TPS | ★ 認証情報キャッシュ |
| EC2 API | API ごとに別個の TPS | バッチ API / 並列度制限 |
| SES | 送信レート(秒間)+ 日次クォータ | SQS でキューイング |
| Lambda | 同時実行数上限(既定 1000) | 上限緩和申請 / リザーブド同時実行 |
監視: CloudWatch でスロットリングを可視化
# 主要サービスのスロットリングメトリクス
DynamoDB : UserErrors, SystemErrors, ThrottledRequests
Lambda : Throttles
API Gateway : 4XXError (429含む)
SQS : NumberOfMessagesSent + エラー
SES : Bounce / Complaint / Send
CloudWatch アラームを設定して通知:
- ThrottledRequests > 0 → Slack 通知
- Lambda Throttles > 10/min → 上限緩和検討
FAQ
Q: リトライしてもずっとスロットリングする
A: アカウント上限に到達している可能性大。Service Quotas で確認し、上限緩和申請してください。
Q: 並列度を 1 にしてもスロットリングする
A: 他のシステム(同じアカウントの別 Lambda 等)が API を使っていませんか? アカウント全体で共有する制限もあります。
Q: 429 と 503 の違いは?
A: 429 (Too Many Requests) はクライアント起因のレート超過、503 (Service Unavailable) はサービス側の過負荷。どちらもリトライ対象です。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- Error 400 : Bad Request Parameter Operation is missing
- MissingParameter. The request must contain the parameter Signature.
- RequestThrottled. AWS Access Key ID: ... . You are submitting requests too quickly
- SignatureDoesNotMatch. The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
- failed to open stream: HTTP request failed! HTTP/1.1 503 Service Unavailable
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?