[アップデート] Amazon SES に新機能 Mail Manager が追加されました

2024.05.23

いわさです。

先日 Amazon SES を眺めていたら何やら見たことのない機能が追加されていました。

そして、つい先程アップデートのアナウンスと公式ブログも公開されました。

どうやら受信メールゲートウェイを担う機能のようです。

今までも Amazon SES ではシンプルにメールを受信して SNS への通知や Lambda の実行などは出来ていましたが、公式ブログによると受信メール機能が強化されたようなイメージでしょうか。

Amazon SES currently offers a way to receive incoming emails from the internet using its SMTP interface called SES Inbound. This provided a shared, regional SMTP endpoint that all SES customers could use to accept emails. Improved upon this, Mail Manager introduces a more flexible and powerful approach with different types of ingress endpoints to handling inbound email with Amazon SES.

一定期間アーカイブしておくことが出来たり、E メールアドオン機能を使ったセキュリティソリューションの統合など様々なことが行えるようです。

本日は基本的な使い方であるイングレスエンドポイントやルールセットの構成からアーカイブまでを確認してみたのでちょっと紹介します。

その前に料金を確認しておきましょう...

先日 Bedrock で高額な料金を発生させてしまったのでまずは念入りに料金仕様を確認してみましょう。

この機能は有料で処理されるメールの数やアーカイブするメールの量、あとはエンドポイントのプロビジョニング時間に応じて料金が発生するようです。
イングレスエンドポイントにはオープンと非オープンの 2 つのタイプがあるのですが、基本的な使い方としてはおそらく前者のタイプで MX レコードの解決先をこのイングレスエンドポイントにしてやって、Mail Manager で処理した後に本来の受信者に送ってやるような使い方になるんだと思います。

月 50 ドルか。まさかプロビジョニングした瞬間に 50 ドル発生しませんよね。
怖いなー怖いなー。

少し触ってみた

多機能なので全部は今日確認出来ませんが、まずは基本的な機能だけ使ってみたいと思います。
Mail Manager のアクセスは Amazon SES コンソールから行います。東京リージョンも使えます。

今までのメール受信機能も引き続き以下からアクセスすることが出来ます。

Mail Manager は VDM の下に新しくメニューが追加されていますね。

「設定を開始」メニューからは必要なコンポーネントが作成されているか確認することが出来ます。
この画面はコンポーネントが存在しているか確認しているようで、それらが適切に構成されているか確認するためのものではないようです。

最低限の使い方ですが、イングレスエンドポイントが受信エンドポイントになります。
イングレスエンドポイントを作成する際に、トラフィックポリシーとルールセットを関連付けする必要があります。
トラフィックポリシーはルールに従って許可するか拒否するかを設定する部分です。
ルールセットはもう少し詳細なアクションを定義することが出来ます。宛先が xxx であればアーカイブするとか、SES で転送するとか色々と出来ます。
今回はアーカイブ機能を使いたいのでルールセットでアーカイブを構成しておきます。

トラフィックポリシーを作成

トラフィックポリシーは次のようにデフォルトアクションで「許可」だけ設定しました。

今回はデフォルトアクションのみ設定しましたが、複数のアクションを組み合わせて、特定条件だけ拒否するとか許可するとか、そんなことが出来ます。

アーカイブとルールセットの作成

続いてルールセットを作成しますが、今回はルールセット内でアーカイブ先を指定したいので先にアーカイブを作成しておきます。
アーカイブは複数作成が可能で、アーカイブごとに保持期間を指定します。

ルールセットでは条件とアクションを指定します。
受信メールのプロパティに従って様々なアクションを行うことが出来ます。

今回は適当な件名の時にアーカイブするようにしてみました。
先ほど作成したアーカイブリソースを指定します。

イングレスエンドポイントを作成し MX レコードを登録

続いてイングレスエンドポイントを作成します。
これはデプロイした時から料金が発生するものになるので注意しましょう。
作成済みのトラフィックポリシーとルールセットを指定します。

数秒でプロビジョニングされましてステータスがアクティブになります。
すると ARecord プロパティが確認出来るようになりました。

この値を使いたいドメインの MX レコードとして登録します。

メール送信してアーカイブ検索してみる

さて、名前解決も出来るようになったのでこれでメール受信まではいけるはず。
送信してみましょう。

送信後、アーカイブ機能からアーカイブリソースを指定して検索します。
該当するアーカイブが存在すれば次のように受信したメールが確認出来ます。私が確認した際には結構タイムラグがあって数分遅れてようやくアーカイブで検索出来るようになりました。

メッセージを選択し、「詳細を表示」ボタンを押すと次のようにメッセージ内容が確認出来ます。
ヘッダーなどだけでなく本文まで確認出来ますね。良いですね。

「メッセージをダウンロード」ボタンでは選択したメッセージの RAW データを取得することが出来ました。

:

Message-ID: <CAKEzPUgnZ5=KAEifBm0iZgzJTgn9uxP5ndzVvoqAAq+3+MEEVw@mail.gmail.com>
Subject: hoge
To: fuga@hoge0523.tak1wa.com
Content-Type: multipart/alternative; boundary="000000000000917ef006190e14e8"

--000000000000917ef006190e14e8
Content-Type: text/plain; charset="UTF-8"

fuga

--000000000000917ef006190e14e8
Content-Type: text/html; charset="UTF-8"

<div dir="ltr">fuga</div>

--000000000000917ef006190e14e8--

さいごに

本日は Amazon SES にメールゲートウェイ機能の Mail Manager が追加されたので使ってみました。

受信とアーカイブという基本的なところだけ確認しましたが、他にも SMTP リレーや E メールアドオンなどの機能もあります。
E メールアドオンで確認出来たのは次の 3 つの製品でした。別途料金が発生しますが使ってみたいですね。

料金情報は明日以降にまた追記したいと思います!

追記

イングレスエンドポイントの使用量と料金について実績を調べてみました。次のように算出されています。

% aws ce get-cost-and-usage --cli-input-json file://hoge.json
{
    "GroupDefinitions": [
        {
            "Type": "DIMENSION",
            "Key": "USAGE_TYPE"
        }
    ],
    "ResultsByTime": [
        {
            "TimePeriod": {
                "Start": "2024-05-22",
                "End": "2024-05-23"
            },
            "Total": {},
            "Groups": [
                {
                    "Keys": [
                        "APN1-ArchiveIngestedSize-Byte"
                    ],
                    "Metrics": {
                        "UnblendedCost": {
                            "Amount": "0.0000159628",
                            "Unit": "USD"
                        },
                        "UsageQuantity": {
                            "Amount": "0.0000079814",
                            "Unit": "GB"
                        }
                    }
                },
                {
                    "Keys": [
                        "APN1-ArchiveStorageSize-ByteHrs"
                    ],
                    "Metrics": {
                        "UnblendedCost": {
                            "Amount": "0.0000000846",
                            "Unit": "USD"
                        },
                        "UsageQuantity": {
                            "Amount": "0.0000004452",
                            "Unit": "GB"
                        }
                    }
                },
                {
                    "Keys": [
                        "APN1-IngressPoint-Subscription"
                    ],
                    "Metrics": {
                        "UnblendedCost": {
                            "Amount": "0.023634355",
                            "Unit": "USD"
                        },
                        "UsageQuantity": {
                            "Amount": "0.0004726871",
                            "Unit": "Months"
                        }
                    }
                },
                {
                    "Keys": [
                        "APN1-Message"
                    ],
                    "Metrics": {
                        "UnblendedCost": {
                            "Amount": "0.00045",
                            "Unit": "USD"
                        },
                        "UsageQuantity": {
                            "Amount": "3",
                            "Unit": "Count"
                        }
                    }
                }
            ],
            "Estimated": true
        }
    ],
    "DimensionValueAttributes": []
}

単位がMonths0.0004726871でした。
720時間 * 60分 で約 20 分間課金されていました。起動から削除までの期間みたいですね。1ヶ月分課金されなくて良かったです。