Amazon LambdaとAmazon SESの概要・使用例について

はじめに

システムの写真

Amazon Lambda(以下、Lambda)とAmazon SES(以下、SES)を組み合わせることで、メールサーバーを構築できるだけでなく、大量の同報メールを送信するなど、メールに関して様々な処理を行うことができます。まずLambdaとSESの概要を押さえたうえで、両者を組み合わせた場合のユースケースについて確認することにします。

Amazon Lambdaとは

Lambdaは、なんらかのイベントが起きたら、あらかじめ設定した処理(機能=関数)が実行される環境です。Lambdaを使用することで、サーバーのプロビジョニングや管理をすることなく、コードを実行できます(サーバレス)。料金は、コンピューティングに使用した時間に対してのみ発生します。具体的な使用例としては、S3のイベント発生(ファイルアップロードなど)をトリガーにデータ処理をおこなう、リアルタイムのストリーミングデータを処理する、データの抽出、変換、ロードする、バックエンド処理をおこなう、このようなことがLambdaで具体的には実現可能です。

Amazon Lambdaのメリット

従量課金はAWS自体のメリットですが、それでもサーバを起動していれば(処理が行われていない時間も)課金対象になります。一方、Lambdaならリクエストがあったらその時間だけが課金対象となり100万リクエストにつき0.2USドル、毎月100万リクエストまで無料なので、用途によってはさらにコストを抑えることが可能です。またLambda は必要なときだけコードを実行し、リクエスト受信の回数に合わせて自動的にスケールします。ユーザーは何も設定する必要がありません。コードが処理できるリクエスト数に上限はありません。AWS Lambda は基本的にイベントの発生からミリ秒単位でコードを実行します。また Lambda は自動的にスケールするため、イベントの頻度が上昇しても一貫して高いパフォーマンスを維持できます。コードがステートレスなので、Lambda は時間のかかるデプロイや設定によって遅れが出ることなく必要な数だけインスタンスを実行できます。

Amazon SESとは

ニュースレター、受領通知、旅行の案内、アカウント関連の通知、法的通告など、Eメールにはさまざまなユースケースがあります。Amazon SESを利用することにより、簡易にメール受信、送信を行うことができます。SES(Simple Email Service)はAmazonが提供するフルマネージド型のEメール送受信サービスで、コスト効率に優れたEメール送信サービス、高信頼性・スケーラブル、メール受信をトリガーにLambda等の実行が可能という特徴を持っています。

SESとBounces(バウンス)、Complaints(苦情)について

メールを送信する際、メールが届かず送信者に差し戻されることや、送信したメールが「スパムとして報告」されることがあります。前者をBouncesといい後者をComplaintsといいます。悪意のあるメール配信を防ぐため、AWSにおいて送信者はバウンス率や苦情率を低く抑える必要があります。これらを気にしないと、最悪の場合AWSによってメール配信を停止される可能性もあります。

SESのドメイン認証とサンドボックスモードについて

SES からメールを送信するためには、送信元となるメールアドレスのドメインを検証しなければなりません。また初期状態ではSESはサンドボックスモードになっており(不正使用や悪用を防止し、送信者としての評判を保つため、新しい Amazon SES アカウントには一定の制限が適用されている)、認証した特定のメールアカウントにしか送信できない、など制限があります。そのため、不特定多数へのメール送信を行う場合は、運用時にサンドボックスの外に出る必要があります。その際にはAWSに申請が必要となります。

LambdaとSESを組み合わせたシステム構築の一例

SESで受信したメールをLambdaで別の宛先に転送する手順を書いてみます。まずなりすまし攻撃を防ぐため、Route53と連携し、受信メールのドメインを確認するドメイン認証の設定をSESに行います。またSESに届いたメールはS3に保存する設定も行います。そのため受信メール保存用バケットを作成し、SESにそのバケットに対する書き込み権限を与えておく必要があります。そしてSESにおいて受信ルールを作成し、S3にメールが保存された場合に、メールを転送する処理を記述したLambda Functionが実行されるように設定します。SESにはアクションを登録することができます。これにより受信用に設定したドメインに対してメールが送信されると、指定した宛先にメールが送信されるようになります。

おわりに

今回はLambdaとSESの概要と、その使用例を簡単に説明しました。LambdaとSESを組み合わせることで、AWSにおいてメール送受信にさまざまな付加処理を加えることができるようになります。昨今SESが東京リージョンに対応したと聞いております。ぜひこの機会に導入を検討してみてはいかがでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です