AWS SESではダッシュボードで大まかな送信数(やバウンス数など)は確認できるんですが、正確な数を取得する必要性にかられた[1]のでやってみたメモ。

公式ドキュメントは下記の通りです。

Amazon SES API を使用した使用統計のモニタリング

これによると、以下が取得できると記載されてます。

過去 2 週間の送信アクティビティを示すデータポイントのリストが返されます。このリストの各データポイントは、15 分間のアクティビティを示し、その期間に関する以下の情報が含まれています

  • ハードバウンス数
  • 苦情数
  • 配信試行回数 (送信した E メールの数に対応します)
  • 送信試行の拒否数
  • 分析期間のタイムスタンプ

AWS CLIで取得


今回は一番手っ取り早い手あろうAWS CLIで取得しました。

1
$ aws ses get-send-statistics

リージョンはaws configureの時に指定しました。aws helpを確認すると--regionオプションがあるので後から指定可能だと思います。

1
2
3
4
5
6
$ aws help

...

--region (string)
The region to use. Overrides config/env settings.

取得結果


ドキュメントに記載のあった通り、15分ごとにまとめられたリストが返ってきます。例えば1時間に3910件のメールを送信したとすると、下記のように15分ごとに4分割したJSONのリストが返ってきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
"SendDataPoints": [
{
"Bounces": 2,
"Timestamp": "2019-06-11T01:17:00Z",
"Rejects": 0,
"DeliveryAttempts": 898,
"Complaints": 0
},
{
"Bounces": 3,
"Timestamp": "2019-06-11T01:02:00Z",
"Rejects": 0,
"DeliveryAttempts": 917,
"Complaints": 0
},
{
"Bounces": 0,
"Timestamp": "2019-06-11T01:47:00Z",
"Rejects": 0,
"DeliveryAttempts": 996,
"Complaints": 0
},
{
"Bounces": 2,
"Timestamp": "2019-06-11T01:32:00Z",
"Rejects": 0,
"DeliveryAttempts": 1099,
"Complaints": 0
}
]
}

なお、並列処理しているのか、JSONの並び順は時間通りではないです。

また、例えばバウンスの詳細理由や、どのメールがそれに該当するのか。といったような各種詳細を取得するには他サービスと組み合わせる必要があります。2016年の時点ではSQSと組み合わせるのが一般的でした。おそらく今も同じではないかと思います。知らんけど。

おわり。


  1. 前回送信分との送信数に差がありすぎてグラフ上で確認できなかった。 ↩︎