lambda内で処理した結果をsesを使用してメールで送信する。
環境
serverless -v
Framework Core: 2.1.1
Plugin: 4.0.4
SDK: 2.3.2
Components: 3.1.3
node -v
v14.7.0
目次
- メールアドレス登録
- serverless create
- コード追加
メールアドレス登録
awsマネジメントコンソールにアクセス、sesのコンソール画面に移動。
画面上部のVerify a New Email Addressをクリックする。
クリックしたらモーダルウィンドウが出てくるので、登録したいメールアドレスをクリック。
登録したら、awsから認証のメールが届くので、届いたメールのリンクをクリックし、認証を完了させる。
sandboxから外す
このままでは、認証を得たメールアドレスに対してしかメールを送信することができません。
登録したメールアドレスをsandboxから外しましょう。
やることは簡単で、
Email Sending > Sending Statisticsより、Edit your account detailsをクリック
Enable Production AccessをYesに変更するだけです。
他の項目は記入しなくても承認されるかと思われます。
一応他項目の詳細を記入しておきます。
- Mail Typeは送信する予定のメールの種類を選択します。特に理由がなければ、Transactionalのままでokです。
- Website Urlは所属している企業の会社説明のurlがベターかと思います。これの用途はAWSが、これから送信する予定のコンテンツの種類を理解するためです。なので、個人開発をしている方はtwitterなどのリンクでもいいかと思います。
- Use case descriptionは、Amazon SES を使用してメールを送信する方法を記入します。
- Preferred contact languageは母国語を選択してください。
Submit for reviewをクリック後、10分ほどで、Production AccessがSandboxからEnabledに変更されると思います。変更されたら承認されたということです!🎉
serverless create
今回はTypeScriptを使用します。
serverless create -t aws-nodejs-typescript -n sample -p ./sample
npm install
npm install aws-sdk
コードを追加
今回は、受け取ったevent変数の文字列を送信してみたいと思います。
export const index = async (event: string) => {
const params = {
Destination: {
ToAddresses: "送信先のメールアドレス",
},
Message: {
Body: {
Text: {
Data: `event`,
Charset: "utf-8",
},
},
Subject: {
Data: "テスト",
Charset: "utf-8",
},
},
Source: "sesに登録したメールアドレス",
};
return ses.sendEmail(params).promise();
};
デプロイ
sls deploy -v
AWSコンソールのlambdaの画面から今回デプロイした関数に対してテストを実行すると、引数に入れた文字列が本文となって、メールが送信されていることが確認できるかと思います。
参考url
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/request-production-access.html
https://dev.classmethod.jp/articles/lambda-to-ses/