SES

Amazon SES 送信クォータとサンドボックスの完全ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


Contents

スポンサードリンク

1. 24 時間ローリングクォータと秒単位レートの概要

このセクションでは、SES の送信制限がどのように計測されるかを説明し、変動する数値については最新版ドキュメントへの参照リンクと取得日を明示します。

参考:2024 年 10 月 01 日版「Amazon SES 送信制限の管理

デイリークォータ(24 時間ローリング)

デイリークォータは過去 24 時間分の合計送信数でカウントされ、上限を超えると即座にエラーが返ります。

項目 説明
デイリークォータ 新規アカウントの場合は 200 通/日 が標準(コンソールで確認可)。上限は AWS の審査に応じて増加可能です。
最大送信レート デフォルトでは 14 メール/秒 程度が設定されていますが、リージョンやアカウントの利用実績により変動します。

:数値は上記リンクの「Sending Limits」ページで常に最新情報を確認してください。

秒単位レートの仕組み

SES は 1 秒あたりに許容できるメール送信数をトークンバケット方式で管理しています。

  • トークン生成:秒ごとに上限分だけトークンが補充され、トークンが残っている間はリクエストが受理されます。
  • トークン不足:レートを超えるリクエストは ThrottlingException(日本語では「Maximum sending rate exceeded」)として即座に返却されます。

2. サンドボックス環境から本番環境への移行手順

新規アカウントはまず サンドボックス に配置され、メール送信先が認証済みアドレス/ドメインに限定されます。本節では、制限差異と解除フローを具体的に示します。

制限比較表(2024 年 10 月時点)

項目 サンドボックス 本番環境(デフォルト)
デイリークォータ 200 通/日 10,000 通/日以上(増加申請可)
最大送信レート 1 メール/秒 14 メール/秒以上
宛先制限 認証済みメールアドレス/ドメインのみ 任意の宛先へ送信可能

本番環境への移行フロー(コンソール操作)

以下の手順でサンドボックス解除とクォータ増加申請を同時に行います。

  1. SES コンソール → 「Sending Statistics」画面で現在のステータスを確認。
  2. 左メニューの「Sending Limits」→「Request a Sending Limit Increase」をクリック。
  3. 必要情報(利用ケース、予測送信量、過去実績)を入力し送信。審査が通れば自動で本番環境へ移行します。

ポイント:申請時に具体的なビジネスユースケースと CloudWatch メトリクスから抽出した実績データを添付すると承認率が向上します。


3. エラー別対策 – Maximum sending rate exceeded

秒単位レート超過は瞬間的な送信スパイクで発生しやすく、適切にレート制御しないと配信停止につながります。本節では原因の整理と指数バックオフ実装例を示します。

原因とスロットリングの基本メカニズム

トークンバケット方式により、1 秒あたり許容されたメール数以上がキューに入るとエラーが返ります。

  • 典型的なシナリオ:Cron ジョブで 1 分間に 10,000 通送信 → 平均 166 通/秒 とレート上限を大幅に超過。
  • 影響範囲:失敗したリクエストは再送しないとメールが欠落するため、バックオフロジックの実装が必須です。

指数バックオフ実装例(Bilingual コメント)

Node.js(AWS SDK for JavaScript v3)

Python(boto3)

ベストプラクティス:バックオフ待機中は他のキューイングロジックと併用し、同時リクエスト数自体も制限するとさらに安定します。


4. エラー別対策 – Daily sending quota exceeded

デイリークォータ超過は 24 時間ローリング上限を越えた場合に発生し、大量バッチ処理で特に顕在化します。ここでは原因と削減戦略、そして実装例を紹介します。

原因と送信量削減の戦略

総送信数がクォータ上限に近づくと、途中からエラーが返り始めます。

戦略 具体的な手法 効果
バッチ化 SendBulkEmail API を活用し、1 回のリクエストで最大 50 件までまとめて送信 API 呼び出し回数削減・レート分散
キューイング Amazon SQS と Lambda の組み合わせで 1 秒あたりの処理件数を制御 スロットリング回避・再試行管理
送信スケジュール調整 ピーク時間帯を避け、夜間やトラフィックが少ない時間に配信 クォータ余裕確保

バッチ化とキューイングの実装例

Node.js(SendBulkEmail

Python(SQS + Lambda)

ポイント:キューイングは CloudWatch アラームと連携させ、クォータ逼迫時に自動でポーリングレートを下げることが可能です。


5. クォータ増加リクエスト手順と必要情報

ビジネス成長に伴い送信量が既存クォータを上回る場合は、AWS Service Quotas から増加申請します。以下のフローと添付資料例を参考にしてください。

手順(ステップバイステップ)

  1. AWS マネジメントコンソール → 「Service Quotas」へ遷移。
  2. 左メニューで Amazon Simple Email Service (SES) を選択。
  3. 増加希望項目(Daily sending quotaMaximum send rate)の Request quota increase ボタンをクリック。
  4. フォームに以下を入力し送信:
  5. 利用ケース(例:月間 1,000,000 通のニュースレター配信)
  6. 過去 30 日間の送信実績(CloudWatch Send メトリクスから取得)
  7. 将来予測とビジネスインパクトの説明
  8. 審査完了メールが届くまで待機(通常 1〜2 営業日)。

提出すべき情報テンプレート

項目 推奨記載内容
ビジネス目的 「顧客向けプロモーション」「システム通知」など具体的に列挙
現在のクォータ使用率 Daily sending quota: 8,500 / 10,000 (85%)(CloudWatch データ)
過去実績 総送信数、ピーク時レート、失敗率(例:30 日で 260,000 通、最大 12 メール/秒、エラー率 0.2%)
将来予測 「次四半期で 2 倍に増加予定」など根拠付き数値
リスク評価 クォータ不足がサービス停止につながる旨を簡潔に記載

コツ:数値は必ず公式メトリクスから取得し、主観的な推測だけでなく実績ベースの根拠を示すと承認率が上がります。


6. モニタリング・運用最適化

安定したメール配信には リアルタイムモニタリング接続管理 が欠かせません。ここでは CloudWatch アラーム設定、SMTP 接続プール活用、Dedicated IP の取得とウォームアップ手順を具体的に解説します。

6.1 CloudWatch メトリクスで送信レートと使用率を可視化

メトリクス 説明
Send 1 分間あたりの送信数(レート把握に利用)
Delivery 配信成功メール数
Reject SES が受け付けなかったリクエスト数(レート超過等)
Complaint 受信者からの苦情件数

アラーム例:送信レートが上限の 80% を超えたら通知

ポイント:アラームは SNS トピックに連携し、Lambda で自動的にレート制御パラメータを緩める仕組みと併用すると効果的です。

6.2 SMTP 接続プールと再利用による接続数制限対策

SES の SMTP エンドポイントは IP 当たり約 50 接続 が上限です。大量送信シナリオではプーリングでハンドシェイク回数を削減し、421 系エラーの発生を防ぎます。

Node.js(nodemailer)サンプル(日本語・英語コメント)

Python(smtplib + 手動プール)サンプル

ベストプラクティスmaxConnections は上限の 70% 程度に抑え、rateLimit(Node)や自前のスロットリングロジックで秒間送信数も制御します。

6.3 Dedicated IP とウォームアップ手順

大量配信やブランドメールでは Dedicated IP を取得し、段階的に送信量を増やす「ウォームアップ」プロセスが推奨されます。

  1. IP の取得:SES コンソールの「Dedicated IP」から購入。
  2. 30 日間のウォームアップ例(※実績に合わせて調整可)
Day 送信量 (全体に対する %)
1‑3 5%
4‑7 10%
8‑14 25%
15‑21 50%
22‑30 100%
  1. モニタリング:毎日 ComplaintBounce を CloudWatch で確認し、異常があれば即座に送信量を停止。

結論:Dedicated IP と計画的ウォームアップは送信ドメインの評判維持に直結し、長期的な配信成功率向上につながります。


7. SDK による送信レート自動調整

実運用では CloudWatch メトリクス を取得しリアルタイムでレートを評価、必要に応じてバックオフさせるロジックが有効です。以下は Node.js と Python のサンプルコードです(コメントは日本語・英語併記)。

7.1 Node.js(AWS SDK for JavaScript v3)

7.2 Python(boto3)

まとめ:CloudWatch でリアルタイムにレートを監視し、閾値付近で自動的にバックオフすることで Maximum sending rate exceeded エラーの発生率を大幅に低減できます。


全体まとめ

  1. クォータは変動するため、常に公式ドキュメント(取得日付き)を参照し、コンソールで実測値を確認しましょう。
  2. サンドボックス解除は利用ケースと実績データの提出が鍵です。具体的かつ定量的な情報を用意してください。
  3. レート超過対策は指数バックオフ+キューイングで実装し、コード内に日本語・英語コメントを併記して国際的な可読性を確保します。
  4. デイリークォータ対策はバッチ化・キューイング・送信スケジュール調整の3本柱で設計し、実装例を活用してください。
  5. 増加リクエストは CloudWatch メトリクスに基づく定量データと将来予測を添付すると承認率が向上します。
  6. 運用最適化は CloudWatch アラーム、SMTP 接続プール、Dedicated IP の取得・ウォームアップの3層防御で実現します。

これらのベストプラクティスを組み合わせることで、Amazon SES を安全かつ拡張性の高いメール送信基盤として活用できるようになります。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-SES