Amazon SESを使ってみた
どうもバックエンドエンジニアの「ささやーま」です。
今回は「Amazon SES」について検証してみました。
Amazon SESとは
Amazon SESは(Amazon Simple Email Service)の略で、Amazon WEBサービスのサービスの1つで、既存ドメインまたは既存メールアドレスを利用して、メール配信をしてくれるサービスです。
このサービスを利用するために、ドメイン取得やメールアドレスを新たに作成する必要はありません。
また、無期限の無料利用枠もあり、AWSで構築しているなら使わない手はないのではないでしょうか。
ただし無料枠には、以下の条件があります。
Amazon EC2またはAWS Lambda経由でホストされているアプリケーションからAmazon SESを呼び出した場合、月に62,000通のメッセージまでは無料で送信できます。この無料利用枠の有効期限はありません。
もちろんAmazon EC2またはAWS Lambda経由でなくてもSESサービスは利用できますが、無料枠は適用されないので注意が必要です。
しかし料金的には、送信する各1,000通のEメールにつき0.10USD。
ですから、料金のことはあまり気にせず使えるのではないかと思います。
なぜAmazon SES?
各社のメールボックスプランのSMTPを利用して大量のメール配信を行う際、送信数制限という壁にぶつかります
会員数の多いシステムだと配信できずに問題となります。
例えばS社のレンタルサーバのビジネスプロプランでは、以下の送信数制限になっています。
15分毎に約250通程度
(1,000通/時間 24,000通/日 換算、ただし15分に250通程度を超えない範囲)
この問題を解消するためにSESを使用します。
もちろん送信制限以外にもメリットはたくさんあります。
今回は触れませんが、Eメールのレスポンス(開封数、クリック数等)統計情報も取ることができます。
検証
それでは検証していきましょう。
以下の条件下のもとLaravelからSESでEメール送信できるようにしてみます。
- Amazon EC2, Amazon RDSでWEBシステム(Laravel)構築済
Amazon SES設定
SES用のIAMユーザを作成
- AWSマネジメントコンソールへログイン
- 左上サービスから「IAM」を選択
- 左メニュー「ユーザ」押下
- 「ユーザを追加」を押下
- ユーザ名を入力、AWSアクセスの種類を選択で「アクセスキー・プログラムによるアクセス」を選択して次へ
- アクセス許可の設定で、「既存のポリシーを直接アタッチ」を選択、ポリシーで「AmazonSESFullAccess」を選択
- あとは何もしないで次へ次へ進む
- 最後に「アクセスキー」、「シークレットアクセスキー」が表示されます。CSVダウンロードするかメモを忘れずに!
SESの設定
- Amazon SES画面より「Create identity」を押下
- Create identity画面に遷移します。
今回は既存メールアドレスを送信元として使用するので「Email Address」を選択、「Email Address」に既存メールアドレスを入力して、「Create itentity」を押下。
- 指定したメールアドレスにAWSよりメールアドレスの確認リクエストメールが届きますので、メールに書かれたリンクを押下します。
- メールに書かれたリンクを押下して、検証に成功すれば以下の画面に遷移します。
- メールアドレスの検証成功がしたので、指定したメールアドレスでメールが送信できるかテストしてみます。「Send Test email」を押下
- From-addressに指定した検証成功したメールアドレス、Custom recipiientにも検証成功したメールアドレスを入力して送信します。
※この段階ではSandboxの状態ですので、任意のメールアドレスに送ることはできません。検証済のメールアドレスのみ送信可能です。
- Amazon SES経由で届いていれば成功です。
- Sandboxを解除して任意のメールアドレス宛に送るには本番環境リクエストが必要です。
Snadboxでは、面倒ですがテストで使用するメールアドレスも検証処理を行うしかなさそうです。
Laravel設定
AWS SDK for PHPインストール
composer require aws/aws-sdk-php
環境変数名の変更
config/services.php
他のAWSサービスを使うときかぶるので、環境変数名変更
'key' => env('SES_ACCESS_KEY_ID'),
'secret' => env('SES_SECRET_ACCESS_KEY'),
'region' => env('SES_DEFAULT_REGION', 'us-east-1'),
.env
MAIL_MAILER=ses
MAIL_FROM_ADDRESS=上で登録したメールアドレス
MAIL_FROM_NAME=Laravel-SES
SES_ACCESS_KEY_ID=上で発行された「アクセスキー」
SES_SECRET_ACCESS_KEY=上で発行された「シークレットアクセスキー」
SES_DEFAULT_REGION=「リージョン」 例:東京リージョンの場合は、ap-northeast-1
弊社のオンライン予約パッケージシステム(RESASTA)のメール配信をAmazon SESに変更することができました!
予約メール配信も成功しています!
まとめ
非常に簡単にメール配信をAmazon SESに変更することができました。
いろいろなサービスを組み合わせて、しかも簡単に構築できることにすごく感動しました。
AWSを極めていきたいですね。
AWS認定試験でも受けようかな?
今回は以上になります。
ジェイオンラインではスタッフを随時募集しております。
採用情報ページよりお気軽にお問い合わせください。
この記事を書いた人
最新の投稿
- AWS2022年10月27日Amazon IVSを使ってみた
- Laravel2022年5月9日予約システムのお問い合わせフォームに「reCAPTCHA」を組み込んでみた
- Laravel2022年3月9日添付ファイル付メールを受信したと同時に、他サーバに添付ファイルをコピーさせるプログラム作ってみた
- AWS2022年2月25日Amazon SESを使ってみた