Open1

【Lambda SES】LambdaでSESを動かし、メールを送信してみる

yu.miyoshiyu.miyoshi

概要

LambdaでSESを動かしメールを送信してみた

すること

  • SESの設定
  • IAM
    • ロールの作成
    • LambdaとSESのポリシーアタッチ
  • Lambdaの作成
    • メールを送ってみる

したこと

SESの設定

AWS SES の画面でVerify a New Email Address をクリックし、送信元となるEmailアドレスを登録する

登録したアドレスに認証用のメールが送られてくるので、アクセスするとVerifyができる

認証が完了した、アドレスを選択し、Send a Test Email を押してゴニョゴニョするとメール送信テストができる(設定の上雇用によるが、僕の場合、迷惑メールフォルダに送られてしまった。。)

IAM ロールの作成

Lambda関数を作成する前に、LambdaとSESの操作が可能なロールを作成しておく。後でアタッチする
とりあえず、AWSLambda_FullAccessとAmazonSESFullAccessポリシーをつけたロールを作成する(lambda_to_sesとしておく)

Lambdaの作成

関数の作成 → 関数名の入力(Senderとする) → デフォルトの実行ロールの変更 → 既存のロールを選択する → 先程作成した、lambda_to_sesを選択
今回言語はPython3.6を選択した。
後はバーっとメール送信のためのソースを書いてあげる。

lambda
import boto3
import json

SRC_MAIL = "hoge@hoge.jp"
DST_MAIL = "fuga@fuga.jp"
REGION = "ap-northeast-1"

def send_email(source, to, subject, body):
    client = boto3.client('ses', region_name=REGION)

    response = client.send_email(
        Source=source,
        Destination={
            'ToAddresses': [
                to,
            ]
        },
        Message={
            'Subject': {
                'Data': subject,
            },
            'Body': {
                'Text': {
                    'Data': body,
                },
            }
        }
    )
    
    return response

def lambda_handler(event, context):
    email = "テスト配信"
    message = json.dumps(event, indent = 4)
    r = send_email(SRC_MAIL, DST_MAIL, email, message)
    return r

こんなかんじで 書いてあげて、テストを実行すると、DST_MAIL(この場合は "fuga@fuga.jp")に設定したアドレスにメールがとぶ。