Udemyセール開催中(9/19まで)人気教材が1,500円~

SESの送信クォータを超過した場合の動作【動作確認結果あり】

SES送信クォータアイキャッチ

SESはAWSのサービスの一つでEメールを送ることができます。
AWS公式ドキュメントの記載でこのクォータを瞬間的に超えることはできますが、制限を超えた状態が長時間続くことは許可されません。と記載があります。許可されなくなった状態になった場合、SESを使用したメール送信がエラーになるのか一定時間待ってから再送されるのかがわからなかったので動作確認してみました。

目次

結論 クォータを超過してから制限がかかるまでタイムラグがある

APIを呼び出した時点で送信エラーとなります。一定時間待って再送されるということはありませんでした
クォータ(制限)を超過してから実際に制限されるまでタイムラグがありました。

筆者は制限200件に対して362件のメールを送って数分後に送信できなくなりました。

クォータとは AWSサービスの上限である

クォータとは上限です。SESには代表的なものとして一日あたりのメールの送信上限と、一秒あたりのメールの送信数のクォータが存在します。

ほかにもメールサイズなどのクォータは存在しますが今回は触れません。

サンドボックスでのSESのクォータ

AWSのアカウント発行をした直後はサンドボックスとなっており、その時の制限値は以下です。サンドボックス状態だとAWSにあらかじめ登録しておいたメールアドレスにしかメールを送れないなど、制約がつくのでSESを本格的に利用する際は解除しておきましょう。

サンドボックス状態では以下の制約があります。
・1日当たり200通のメール
・1秒当たり1通のメール
・SESに事前登録したメールアドレス宛にしか送信できない

マネジメントコンソールで砂場状態のSESの上限を確認する
図1 砂場状態のSESクォータ

サンドボックス解除後のSESのクォータ

サンドボックスを解除すると以下のように制限値が緩和されてSESに登録していないメールアドレス宛にも送信できるようになります。

マネジメントコンソールで砂場解除状態のSESの上限を確認する
図2 SESクォータサンドボックス解除後

SESでクォータを超過した際の動作

AWSのナレッジセンターの記事を参照していたら答えがありました。下記のようなエラーになり送信できないようです。

1秒当たりの送信レート超過時
Maximum sending rate exceeded
1日当たりの送信数超過時
Daily sending quota exceeded

動作確認 実際にクォータを超過してみる

メールを送信するソースコード

以下のようなコードでメール送信が行えます。

import boto3

client = boto3.client('ses', region_name='ap-northeast-1')

response = client.send_email(Source='test@gmail.com', 
    Destination={
        'ToAddresses': [
            'test@gmail.com',
        ]
    }, 
    Message={
        'Subject': {
            'Data': 'hello',
       },
        'Body': {
            'Text': {
                'Data': 'hello',
            }
        }
    }
)

実行結果 日次送信数超過のエラー

ローカル環境から実行してみました。するとこのようなエラーが出ました。公式ドキュメントの通りのエラーが発生しました。

botocore.exceptions.ClientError: An error occurred (Throttling) when calling the SendEmail operation (reached max retries: 4): Daily message quota exceeded.

ただ、集計のタイミングと制限のタイミングで少しラグがあるらしく200の上限に達した瞬間に制限されるというわけではありませんでした。しばらくは超過しても送信できていました。

筆者の場合、クォータを超過して10分程度は通常通りメールを送信できていました。
これが「このクォータを瞬間的に超えることはできますが、制限を超えた状態が長時間続くことは許可されません。」の意味なのかもしれません。

マネジメントコンソールでクォータ超過を確認する
図3 一日の送信上限200を超えて送信可能だったので100%を超過している


一時的にクォータを超過した結果、使用した送信クォータが100%を超過しました。

1秒当たりの上限はローカル環境が貧弱だったため超えることができませんでした。ハイスペックマシンでコマンドプロンプト複数起動すると超えられるかと思います。

PR
当ブログはWordPressテーマSWELLを使用しています。非常に使いやすく、簡単にプロのようなデザインを使えるのでお勧めです!!

SWELL – シンプル美と機能性両立を両立させた、圧巻のWordPressテーマ

ランキング

ランキングに参加しています。クリックして応援いただけると嬉しいです。
にほんブログ村 IT技術ブログ クラウドコンピューティングへ
にほんブログ村
AWSランキング
AWSランキング

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次