ぷろぐら×でざいん

PythonでAWSのSNSでSMSを送信する

PythonでAWSのSNSでSMSを送信する

PythonでAWSのSNSでSMSを送信する

AWS SNSとは

Amazon Simple Notification Service (SNS) は、マイクロサービス、分散型システム、およびサーバーレスアプリケーションの分離を可能にする、高可用性で、耐久性に優れたセキュアな完全マネージド型 pub/sub メッセージングサービスです。Amazon SNS は、高スループット、プッシュベース、多対多のメッセージングのためのトピックを提供します。Amazon SNS トピックを使用すると、パブリッシャーシステムが、Amazon SQS キュー、AWS Lambda 関数、および HTTP/S ウェブフックを含む並列処理のために、メッセージを多数のサブスクライバーエンドポイントにファンアウトすることができるようになります。また、SNS はモバイルプッシュ、SMS、E メールを使用するエンドユーザーに対し、通知をファンアウト (一括送信) するのに使用できます。

https://aws.amazon.com/jp/sns/

つまり、メールもSMSもモバイルプッシュも送れる素晴らしいサービスです!


インストール

boto3を使いますのでインストールを忘れずに。


$ pip install boto3


ソースコード


# -*- coding: utf-8 -*-
import boto3

class SMS(object):
    def __init__(self):
        self.client = boto3.client(
            'sns',
            aws_access_key_id="AWS_SES_ACCESS_KEY_ID",
            aws_secret_access_key="AWS_SES_SECRET_ACCESS_KEY",
            region_name='ap-northeast-1'
        )

    def send(self, phone_number, message):
        """
        :param unicode phone_number:
        :param unicode message:
        :rtype: bool
        """
        phone_number = f'+81{phone_number}'
        try:
            res = self.client.publish(
                PhoneNumber=phone_number,
                Message=message
            )
            if not res:
                return False
            return True
        except Exception:
            return False



日本国内を前提としているため、「+81」としています。


使い方


sms = SMS()
sms.send('090xxxxxxxx', 'Hello World')

AWS上でSNSの権限を持つIAMを作成することをお忘れなくー。


まとめ

boto3にはAWSをPythonで動かすためのいろんな機能があるので、よろしければ下記のURLを参照してみてください。


参照

https://aws.amazon.com/jp/sns/

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください