S3にファイルアップロードしたタイミングでLambdaを実行してSESで添付メール送信する方法

S3にファイルアップロードしたタイミングでLambdaを実行してSESで添付メール送信する方法

S3のPUTイベントでEメールを送信する方法は「JavaからS3にアップロードしてSNSを使ってメールを送信する方法」で紹介しました。

今回はS3にアップロードされたタイミングでLambdaを実行してSESでEメール送信してみます。その際にS3にアップロードされたファイルを添付してEメール送信します。

S3にファイルアップロードしたタイミングでLambdaを実行してSESでメール送信する方法

トリガーをS3にして、Lambdaにはこんな権限上げたらとりあえず良いと思われます。

Lambdaはnode.js8.10使用しています。

特に気をつけるところはありませんが、リージョンはSESのリージョンにして下さい。私はバージニア北部なのでus-east-1です。

とりあえずJavaのプログラムからS3にファイルをアップロードしてみます。

すると、Lambdaが実行されて、SESサービスによってメールが送信されることが確認できます。

SESではファイルを添付することが出来ますので、ちょっと修正してファイル添付したメールを送信するようにしてみます。

SESでファイル添付してメール送信する

添付してメール送信したい場合はsendRawEmailを使用しますが、ちょっと便利なモジュールを発見したのでnodemailerを使ってみます。

7zipなどで固めて一旦Lambdaにアップロードしてください。

アップロードしたらインラインで以下をコーディングすればよいです。

node.js8.10ではasyncファンクションになっているので、sendメソッドをasyncファンクションにしてawaitさせる必要があります。

参考サイト

公式サイト

JavaでアップロードしたファイルをS3から取得してメールに添付する

Lambdaでは/tmpディレクトリが一時的に使用できるのでバケットから取得したファイルを一旦/tmp配下に同じ名前のファイルを置いて、その中身を書いたファイルをメールに添付して送信してみます。

もっと簡単に実装する方法はあるかもしれません。

これでJavaからS3へsample.txtというファイルをsaba6seimenjoというバケットにアップロードして、そのタイミングでLambdaが実行されてSESを利用してsample.txtを添付したメールを指定したアドレスに送信することができます。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA