📧

Amazon SES で AWSCLI の ses と sesv2 の違い

2023/02/04に公開

Amazon SES の API には Amazon SES API (v1)Amazon SES API v2 が存在する。
どちらも同じリソースを扱うもので API のバージョンが異なる。
awscli にもそれぞれのコマンドが用意されている。
その違いを少し確認したため書き残す。

単発のメール送信

ses (v1)
$ aws ses send-email --from no-reply@turubee.com --to hoge@turubee.com --subject 'ses test mail' --text 'test'
sesv2
$ aws sesv2 send-email --from-email-address no-reply@turubee.com --destination ToAddresses=hoge@turubee.com --content '{"Simple":{"Subject":{"Data":"ses test mail"},"Body":{"Text":{"Data":"test"}}}}'

バルクメール送信

v1 は試していない。

sesv2
$ aws sesv2 create-email-template --template-name batch-template --template-content '{"Subject": "test:{{count}}", "Text": "count:{{count}} total:{{total}}"}'

$ cat <<EOF >send-bulk-email-input.json
{
  "FromEmailAddress": "no-reply@turubee.com",
  "DefaultContent": {
    "Template": {
      "TemplateName": "batch-template",
      "TemplateArn": "arn:aws:ses:ap-northeast-1:123456789012:template/batch-template",
      "TemplateData": "{\"count\":\"n\",\"total\":\"2\"}"
    }
  },
  "BulkEmailEntries": [
    {
      "Destination": {
        "ToAddresses": [
          "hoge@turubee.com"
        ]
      },
      "ReplacementEmailContent": {
        "ReplacementTemplate": {
          "ReplacementTemplateData": "{\"count\":\"1\"}"
        }
      }
    },
    {
      "Destination": {
        "ToAddresses": [
          "hoge@turubee.com"
        ]
      },
      "ReplacementEmailContent": {
        "ReplacementTemplate": {
          "ReplacementTemplateData": "{\"count\":\"2\"}"
        }
      }
    }
  ]
}
EOF
$ aws sesv2 send-bulk-email --cli-input-json file://send-bulk-email-input.json

送信クォータの取得

ses (v1)
$ aws ses get-send-quota
{
    "Max24HourSend": 200.0,
    "MaxSendRate": 1.0,
    "SentLast24Hours": 0.0
}
ses (v2)
$ aws sesv2 get-account
{
    "DedicatedIpAutoWarmupEnabled": true,
    "EnforcementStatus": "HEALTHY",
    "ProductionAccessEnabled": false,
    "SendQuota": {
        "Max24HourSend": 200.0,
        "MaxSendRate": 1.0,
        "SentLast24Hours": 0.0
    },
    "SendingEnabled": true,
    "SuppressionAttributes": {
        "SuppressedReasons": [
            "BOUNCE",
            "COMPLAINT"
        ]
    }
}

送信統計情報取得

15 分毎の統計を順序不定で出力する。これは v2 には見つからなかった。

ses (v1)
$ aws ses get-send-statistics
{
    "SendDataPoints": [
        {
            "Timestamp": "2023-01-21T08:45:00+00:00",
            "DeliveryAttempts": 1,
            "Bounces": 0,
            "Complaints": 0,
            "Rejects": 0
        },
        {
            "Timestamp": "2023-01-21T09:00:00+00:00",
            "DeliveryAttempts": 1,
            "Bounces": 0,
            "Complaints": 0,
            "Rejects": 0
        }
    ]
}

備忘

新しいバージョンの v2 のみを使えば良いというわけではなく、v1 で使える API も覚えておくと良い。

Discussion