本日はAWSのSESのメモ。
2019年はJavaScriptとAWSを勉強する、と心に決め、JavaScriptの方は色々勉強しましたが、AWSの方が手付かずでした。
インフラ系はここ2年ぐらい進歩していないのでしっかりと勉強したいです。AWSは業務の方ではやっているのですが、リーダーのかたが作った環境に入っているだけで根本的なところが全然理解できていません・・(汗)
まだまだ調べ途中ですが、自分への備忘録として記述しておきます。
Contents
AWSのSESとは?
SESですが、AWSのメールサービスになります。
簡単な特徴としては下記のようなところでしょうか。
- 配信数、クリック率などの数値を取ることが比較的簡単(管理画面で見れる)
- AWSのSDKからメール送信のプログラムを簡単に送ることができる
- 認証方法が豊富
- サーバーの構築などは不要
- 学習コストは比較的高め
実際にSESを使って送受信ということになりますと、当然SES単独では使用できず、S3やRoute53などAWSの他のサービスとの連携も必要になってくるかと思います。
参考リンク
メール受信について
元々は送信しかなかったようですが、今では送受信共にできるようです。
まずは受信に関して。
細かい設定などに関してはリンク先の方が優れていると思うので、大まかな流れについて書きます。
必要なプロセス
- Route53にてドメイン登録
- SESの設定画面にてRecordSetの登録
- SESのRuleSetの登録
- 別サービス側での処理(S3やLamdaなど)
Route53にてドメイン登録
まずドメインの登録です。
お名前やムームーなど他のレジストラのドメインを取っていてももちろん大丈夫かと思いますが、当然同じサービスを使っていた方が設定が楽ですので、私は新たにとりました。
ここら辺は一般のレジストラでドメインを取得する流れと一緒だと思います。
参考リンク
SESの設定画面にてRecordSetの登録
ドメインを登録した後はDNSへの登録をしなくてはいけません。
今までWEBしかやったことなかったんでここら辺は知識がいい加減ですね・・
と言ってもAWSの場合は、ほぼ自動でてきます。
SESの画面からドメインを認証させることができます。
↑この記事の「AmazonS3でメールを受け取れるようにする」のRecordSetの登録までが参考になる思います。
SESの画面でDomainsを選んで、「Verification Status」「DKIM Status」がverified「Enable for Sending」がYesになっていればOKです。
またRoute53の画面で「ホストゾーン」を選び、対象のドメイン名にMXタイプのレコードセットが登録されていればOKです。
他のレジストラでドメイン登録している場合はRoute53に直接レコードセットを登録することになります。
また、DNSの仕組みなどは下記リンクが非常にわかりやすいです。
SESのRuleSetの登録
DNSを設定したら、SESでメールを受信した時の動きを制御します。
これをSESではRuleSetというらしく、受信した後
- S3に保存
- SNSに通知
- Lamdaで処理
など通知をトリガーにして様々なサービスと連携させることができます。
具体的な設置などは下記のリンクがわかりやすいかと思います。
別サービス側での処理(S3やLamdaなど)
例えばS3に登録する場合ですが、
SESからS3へアクセスさせる時ですが、そのままでは「could not write」などみたいなエラーが出て書き込みをすることができません。
そのため、S3に入り、アクセス権限→パケットポリシーというところで下記のようなコードを保存する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSESPuts", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::(バケット)/*(←のように書くとバケット全体。keyで絞ることもできる)", "Condition": { "StringEquals": { "aws:Referer": "自分自身のAWSのアカウントID" } } } ] } |
ここまでやれば後はメールを送信した時にS3にメールの生データが入っていると思います。
私は実務ではここからメールパーサーを使ってデータをとり出していましたが、このままでは使えない(メールとして見れない)ので(注1)実際には転送するのが一般的かと思います。それらの設定についてはおって調べ中です。
注1 SESのメールを直接メールクライアント(例えばOutLook)で見ることはできないようです。
実際にメールを転送して一般のメールクライアントでみる方法はこちら
Amazon SESでの受信→S3→Lambdaでのメール転送
[…] Amazon SESについて(Route53登録→SESで受信→S3で保存) […]
[…] Amazon SESについて(Route53登録→SESで受信→S3で保存) […]
[…] Amazon SESについて(Route53登録→SESで受信→S3で保存) […]