问候大家!!!我将向您展示如何使用Amazon Simple Notification Service(SNS)和Python向电话号码发送SMS消息。
在开始之前,我将向您介绍我们将用于本教程的服务。
简介
Amazon Simple Notification Service(SNS)是一项完全管理的消息传递服务,使您可以向所有设备(例如iOS,Android和Fire OS设备)和电子邮件客户端发送消息。这是发送SMS消息的灵活,具有成本效益的方式,并且可以与其他AWS服务(例如Amazon Lambda和Amazon CloudWatch)集成。
在本教程中,我将向您展示如何使用Python和AWS SDK将SMS消息发送到电话号码(Boto3)。
boto3是Python的Amazon Web Services(AWS)软件开发套件(SDK),它允许Python开发人员编写使用Amazon S3和Amazon EC2等服务的软件。
。。boto3提供了一种方便且易于使用的API,用于与AAPON SNS,Amazon S3和Amazon EC2等AWS服务进行交互。它建立在AWS HTTP API之上,并为AWS服务提供了Pythonic界面。使用BOTO3,您可以编写Python脚本来管理和自动化AWS资源,并自定义AWS服务的行为。
先决条件
开始之前,请确保有以下内容:
- 一个AWS帐户。如果您没有一个,则可以在Aws.amazon.com上免费创建一个。
- Python 3.10.9或最新版本。您可以通过运行以下命令来检查Python版本:Python -V
- 在计算机上安装和配置的AWS CLI(命令行接口)。
设置Amazon CLI
AWS命令行接口(CLI)是用于管理AWS服务的统一工具。使用AWS CLI,您可以从命令行中控制多个AWS服务,并通过脚本自动化它们。
要在计算机上设置AWS CLI,请按照以下步骤操作:
安装Python 3.10.9或最新版本。您可以通过运行以下命令来检查Python版本:
$ python3 --version
安装PIP,Python软件包管理器。您可以通过运行以下命令来安装PIP:
$ python3 -m ensurepip
安装AWS CLI。您可以通过运行以下命令来安装AWS CLI:
$ pip3 install awscli
配置AWS CLI。您可以通过运行AWS配置命令并遵循提示来配置AWS CLI。您将需要提供AWS访问密钥和秘密密钥,以及默认区域和输出格式。您可以通过登录AWS管理控制台并导航到IAM(身份和访问管理)仪表板来获取访问密钥和秘密密钥。
安装并配置了AWS CLI后,您可以使用它从命令行管理AWS资源。例如,要列出帐户中的所有S3存储桶,您可以使用命令:
$ aws s3 ls
设置Amazon SNS
要使用Amazon SNS发送SMS消息,您需要以多种方式设置。
在下面找到设置Amazon SNS的两个步骤。
步骤1
- 登录到您的AWS帐户,
- 然后在搜索栏上输入SNS。
- 单击左侧的菜单栏
- 向下滚动到手机,然后单击“文本消息(SMS)”
- 向下滚动并单击添加电话号码。
- 添加您的电话号码并选择一种语言,将发送验证消息,然后添加电话号码。
- 输入验证代码,然后单击验证电话号码 如果正确完成,您应该看到下面验证的号码
步骤2
- 登录AWS管理控制台并导航到Amazon SNS仪表板。
- 单击创建主题按钮。
- 输入主题的主题名称和显示名称,然后单击“创建主题”按钮。
- 在“订阅”选项卡中,单击“创建订阅”按钮。
- 选择SMS作为协议,然后输入您要订阅该主题的电话号码。
- 单击创建订阅按钮以订阅电话号码为主题。
使用Python发送SMS消息
现在您已经设置了一个SNS主题并订阅了该主题的电话号码,您可以使用Python和Boto3库将SMS消息发送到电话号码。
首先,通过运行以下命令安装boto3库:
$ pip3 install boto3
接下来,创建一个python脚本并导入boto3库。然后,使用以下代码创建一个SNS客户端:
import boto3
# Create an SNS client
sns_client = boto3.client('sns')
创建三个变量一个用于电话号码,另一个用于消息。添加消息的内容和将在定义变量中接收消息的实际电话号码。
phone_number = '+1234567890'
message = "This is a test message sent from Nnamdi using Amazon SNS and python."
# Set the topic ARN that the phone number is subscribed to
topic_arn = 'arn:aws:sns:us-east-1:123456789012:MyTopic'
要发送SMS消息,您可以使用客户端对象的publish()方法。发布()方法需要以下参数:
Phonenumber:您要发送SMS消息的电话号码。
消息:SMS消息的内容。
主题:亚马逊简单通知服务(SNS)中主题的唯一标识符。主题是一个逻辑访问点和通信渠道,用于允许消息发布到订阅端点或客户端。
这是如何使用Publish()方法发送SMS消息的示例:
# Send the SMS message
response = sns.publish(
PhoneNumber=phone_number,
Message=message,
TopicArn=topic_arn
)
下一步也是最后一步打印出代码,如果消息失败或成功发送,将通知您响应。它还将显示消息ID
print(f"Message sent! Message ID: {response['MessageId']}")
这将将SMS消息发送到指定SNS主题的电话号码。
请注意,您要发送的SMS消息的电话号码必须订阅到主题参数中指定的SNS主题。
另外,您可以选择发送到我之前向您展示的验证号码,并取出SNS主题的代码线,如下
phone_number = '+1234567890' # add recipients phone number here
message = "Test Message from nnamdi" # add message here
# Send the message
response = sns_client.publish(
PhoneNumber=phone_number,
Message=message
)
如果正确遵循该过程,则应在下面的提示。
nb:我们验证的数量是在美国东部(北弗吉尼亚州)地区的SMS沙箱中。在沙箱中,您只能将SMS传递到已验证的沙箱目的地电话号码。
当您的帐户从沙箱中移出时,这些限制将被删除,您可以向任何收件人发送SMS消息。
要将您的帐户移出沙箱,请单击链接以获取AWS AMAZON SNS SMS SANDBOX DOCUMENT
我希望这会有所帮助!
您可以从我的github repo
获得Python脚本