AWS Lambdaからsnsでメール送信する(Python)

目次

目的

AWSのLambdaからsnsでメール送信するメモです。

コードはPythonです。

 

snsを設定する

1.snsでメールを送信する設定を行います。

AWS SNSでメールを送信する

 

関数を作成する

import boto3

sns = boto3.client('sns')

def lambda_handler(event, context):

    str1 = "hello"
    str2 = "world"
    message1 = "test - %s and\n %s " %(str1,str2)

    response = sns.publish(
        TopicArn = 'arn:aws:sns:ap-northeast-1:999999999999:test-sns3',
        Subject = 'test-title1',
        Message = message1,
    )
    return response

7-9行目は、メールの本文です。
変数に値をセットしています。改行もあります。

11行目のpublishでメールを送信します。
12行目は、AWSのアカウント(999)とSNSのトピック(test-sns)を指定しています。
13行目は、メールタイトルです。
14行目は、メール本文です。

 

関数にsnsを操作する権限を付与する

この関数はsnsを操作するのでその権限を付与します。
※関数作成前にロールを作成しておいて、関数作成時に作成したロールを付与しても可です。

1.作成した関数の画面で、「設定」>「アクセス権限」>実行ロールのロール名のリンクをクリックします。IAMのロールの画面に遷移します。

 

2.「許可」>「許可を追加」>「ポリシーをアタッチ」をクリックします。

 

3.snsで検索し、AmazonSNSFullAccessにチェックを入れ、「許可を追加」をクリックするとsnsフルアクセスのポリシーが追加されます。

 

送信するメールイメージ

lambdaを実行すると以下のようなメールが送信されます。

関連の記事

AWS Lambdaでhello worldを出力する(Python)
AWS LambdaからS3にファイルを書き込む/読み込む

△上に戻る