🐭

【AWS SES, Lambda, API Gateway】設計編:サーバーレスでメール配信APIを作る

に公開

はじめに

Webサービスやアプリケーション開発において、メール配信機能はとても重要です!例えば、以下のようなユースケースが考えられます。

  • ユーザー登録時の確認メール送信
  • パスワードリセットの案内メール送信
  • ニュースレターやお知らせの配信
  • お問い合わせへの自動返信
  • システムからのアラート通知

AWS SESとLambda、API Gatewayを活用すれば、これらのメール配信機能をサーバーレスで簡単に実装できます!
この記事では、具体的な実装手順を通して、AWSのサーバーレスサービスによる効率的なメール配信システムの構築方法について、イメージとなるを設計部分を解説します。

実装編はこちら↓
https://zenn.dev/zenzoe/articles/1d1ce6171d4444

前提条件

  • AWSアカウントを持っていること

1. 必要なAWSサービスとAPIの仕組み

1-1. システム構成図

まずは、今回構築するメール配信APIのシステム構成図を見てみましょう。

クライアントからのリクエストは、まずAPI Gatewayによって受け取られ、次にLambda関数によって処理されます。その後、SESを経由してメールが送信されるシンプルな構成です。API Gatewayは、リクエストの管理や認証、CORSの設定などを行い、セキュアで高機能なAPIを提供します。

1-2. AWS Lambdaとは

AWS Lambdaは、サーバーレスコンピューティングサービスです。サーバーのプロビジョニングや管理を気にすることなく、コードを実行できます。今回のAPIでは、メール送信処理のロジックをLambda関数に実装します。イベント駆動型なので、リクエストが発生した時だけ実行され、無駄なコストを抑えられます。

1-3. AWS SESとは

AWS SES (Simple Email Service) は、メールを送受信するためのクラウドベースのサービスです。高可用性でスケーラブルなインフラストラクチャを提供し、大量のメール送信にも対応できます。スパム対策機能も備わっており、安全にメールを配信できます。

1-4. API Gatewayとは

API Gatewayは、AWSのフルマネージドサービスで、APIを作成、公開、管理するためのプラットフォームです。API Gatewayを使用することで、Lambda関数や他のAWSサービスを簡単に統合し、セキュアなAPIを構築できます。主な機能には、リクエストの管理、認証、CORSの設定、スロットリング、キャッシングなどがあります。

1-5. データフロー

次に、APIのリクエストからメール送信までのデータフローをシーケンス図で示します。

今回はリクエストボディに送信先メールアドレス(to)(複数可能)、件名(subject)、本文(messageBody)を指定すると、それに応じたメールを送信するAPIを作成します。

データフローの内容

  1. クライアントは、送信先メールアドレス(to)、件名(subject)、本文(messageBody)を指定してAPI Gatewayにリクエストを送信します。
  2. API GatewayはリクエストをLambda関数に転送し、リクエスト内容を検証します。
  3. Lambda関数はSESにメール送信リクエストを送信します。
  4. SESは受信者にメールを配信します。
  5. SESはAPI Gateway & Lambdaに送信結果(MessageId)を返します。
  6. API Gateway & Lambdaはクライアントにレスポンス(ステータスコード、MessageId)を返します。

続き

具体的な実装につきましては、以下の記事にて解説します。
https://zenn.dev/zenzoe/articles/1d1ce6171d4444

参考資料

Discussion