【AWS】いまさら空メール【SES】
【AWS】いまさら空メール【SES】:
空メール自動受付システム的なものを作る。
Lambdaで便利な関数を作ったは良いが、それを任意のタイミングで起動したい時どうすべか?かと考えた挙句、
古から伝わる”空メール”という技法を使うことにした。
概要は・・・
1. DNS設定:メールがSESに到着するようにする
2. SES設定:受信したメールをLambdaに流し入れる
3. Lambda:受け取ってから何かする
このあたりを参考に。
私が持っているドメインは、MXレコードがGoogleに向いているのでサブドメインを作ることにする。
↓翻訳
上図のように、東京リージョンにはSESがないので、オレゴンあたりで受けます。
リージョン違いでうまくいかなかった。下記テスト結果
SNSで到着するので、形式はJSONです!
Amazon SES の Amazon SNS 通知のコンテンツ ��これのMailオブジェクトです。
billing @aws.hoge.comに空メールを送ると、AWS請求料金が帰ってくる仕組みを作った。
アカウント部分を増やせば色々できそう。。
メール内容がJSONで受ける事ができるので、メール内容をDB登録とかもできますな。
やりたいこと
空メール自動受付システム的なものを作る。Lambdaで便利な関数を作ったは良いが、それを任意のタイミングで起動したい時どうすべか?かと考えた挙句、
古から伝わる”空メール”という技法を使うことにした。
作り方
概要は・・・1. DNS設定:メールがSESに到着するようにする
2. SES設定:受信したメールをLambdaに流し入れる
3. Lambda:受け取ってから何かする
受信メールを受け付ける設定
このあたりを参考に。私が持っているドメインは、MXレコードがGoogleに向いているのでサブドメインを作ることにする。
↓翻訳
現在、私がRoute53で管理しているドメイン�� hoge.com
hoge.comのMXレコードは、Google提供のものを設定している
変な設定をして、メールが受け取れなくなると困るので、サブドメインで受けることにする
Route53でレコードを1つ追加する
aws.hoge.com MX [SESで指定されたもの]
これで、ore@aws.hoge.com みたいなメールアドレスで受信できる
受信したメールをさばく
上図のように、東京リージョンにはSESがないので、オレゴンあたりで受けます。リージョン違いでうまくいかなかった。下記テスト結果
❌オレゴンSES→東京LambdaこれでLambdaにメールが届きます。
❌オレゴンSES→東京SNS
⭕️オレゴンSES→オレゴンSES→東京Lambda
SNSで到着するので、形式はJSONです!
Amazon SES の Amazon SNS 通知のコンテンツ ��これのMailオブジェクトです。
Lambda
- SNSを受け取って起動
- 送信者が知っている人か?を判定
- 宛先のアドレスによって、処理方法を分岐
という感じです。
SES→SNSで発火するもの
exports.handler = function(event, context) { var eventSns = event.Records[0].Sns; var msg = eventSns.Message; var msgObj = JSON.parse(msg); var flg = false; //送信者は知っている人かチェックする switch(msgObj.mail.source){ case 'omae@sitteru.com' : case 'you@sitteru.com': flg = true; break; default: console.log("知らない人からメールが来ますた"); console.log(msgObj.mail); //ログに書いて終わり } if(flg) { //from判定OKの場合のみ //宛先アドレスによる処理分岐 switch(msgObj.mail.destination + ''){ case 'ore@aws.hoge.com': //請求情報通知 var aws = require('aws-sdk'); var lambda = new aws.Lambda(); var lmdParam = { FunctionName: "★他のLambda関数★", InvocationType: "Event", Payload: JSON.stringify(event), }; lambda.invoke(lmdParam, function(err, data) { if(err) { console.log(err + err.stack); } else { console.log(data); } }); break; default: //Slackに送るとか } } };
まとめ
billing @aws.hoge.comに空メールを送ると、AWS請求料金が帰ってくる仕組みを作った。アカウント部分を増やせば色々できそう。。
メール内容がJSONで受ける事ができるので、メール内容をDB登録とかもできますな。
コメント
コメントを投稿