python(boto3)を使ってAmazon SNSでメールを送信してみた。

AmazonSNSの準備

ステップ1:トピックを作成する

  • AWSサービスの「アプリケーション統合」にある「Simple Notification Service」を選択し、SNSのダッシュボードを開きます。

  • 「トピックの作成」をクリックします。

  • 「新しいトピックの作成」画面が開いたら「トピック名」を入力して、「トピックの作成」をクリックします。

  • トピックが作成されると「トピックの詳細」が表示されます。

ステップ2:サブスクリプションを作成する

  • 「トピックの詳細画面」にある「サブスクリプションの作成」をクリックします。

  • 「サブスクリプションの作成」画面が表示されたら「プロトコル」と「エンドポイント」を入力していきます。
  • 今回はメールを送信したいので「プロトコル」を「Email」に変更し、「エンドポイント」に通知したいメールアドレスを入力します。
  • 入力が完了したら「サブスクリプションの作成」をクリックします。

  • サブスクリプションが作成されると次のような画面が表示されます。

  • この時点ではまだメールアドレスの購読確認が完了していないので「サブスクリプションID」が「Pending Confirmation」となっています。

ステップ3:購読確認を行う

  • サブスクリプションを作成すると「エンドポイント」で設定したメールアドレスに下の画像のような確認メールが届きます。
  • 確認メールを開き、「Confirm subscription」をクリックします。

  • リンクをクリックすると次のような画面が表示されます。

  • このWebページが表示されたら購読確認は完了です。

  • 購読確認が完了したらトピックの詳細画面に戻ります。

  • 下の画像のように「サブスクリプションID」が書き換わっていることを確認します。もし「Pending Confirmation」のままであれば画面右側にある更新ボタンをクリックして更新してみてください。

ステップ4:メッセージを送信してみる

  • 「トピックの詳細」画面にある「トピックに発行」から、試しにメッセージを送信してみます。

  • 「メッセージを発行」画面が表示されたら、「件名」と「メッセージ」を入力し、「メッセージの発行」をクリックします。

  • 次のようなメールが届けばOKです。

これでSNSの設定は完了です。

Boto3を使ってメッセージを送信してみる

準備

コードを書いてみる

  • send_mail.py
import boto3

accesskey = "IAMのACCESS-KEY"
secretkey = "SECRET-ACCESS-KEY"
region = "ap-northeast-1"

topic_arn = "arn:aws:sns:ap-northeast-1:xxxxxxxxxxxx:TEST"

sns = boto3.resource("sns", aws_access_key_id=accesskey, aws_secret_access_key=secretkey, region_name=region)

response = sns.Topic(topic_arn).publish(
        Message="This is a test message!!",
        Subject="TEST"
        )

print("response is {}".format(response))

  • アクセスキーとシークレットアクセスキーはIAMでSNSの権限を与えたアカウントを作成して発行する必要があります。

実行する

  • 実行結果

  • 実行したら下の画像のようなメールが届きました。