【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登録とかもできますな。
コメント
コメントを投稿