使用Python(Boto3)使用Amazon SNS发送短信
#aws #教程 #python #sns

Image description

问候大家!!!我将向您展示如何使用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服务的行为。

先决条件

开始之前,请确保有以下内容:

  1. 一个AWS帐户。如果您没有一个,则可以在Aws.amazon.com上免费创建一个。
  2. Python 3.10.9或最新版本。您可以通过运行以下命令来检查Python版本:Python -V
  3. 在计算机上安装和配置的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)”
  • 向下滚动并单击添加电话号码。
  • 添加您的电话号码并选择一种语言,将发送验证消息,然后添加电话号码。
  • 输入验证代码,然后单击验证电话号码 如果正确完成,您应该看到下面验证的号码

Image description

步骤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
)

如果正确遵循该过程,则应在下面的提示。

Image description

nb:我们验证的数量是在美国东部(北弗吉尼亚州)地区的SMS沙箱中。在沙箱中,您只能将SMS传递到已验证的沙箱目的地电话号码。
当您的帐户从沙箱中移出时,这些限制将被删除,您可以向任何收件人发送SMS消息。
要将您的帐户移出沙箱,请单击链接以获取AWS AMAZON SNS SMS SANDBOX DOCUMENT

的详细步骤

我希望这会有所帮助!

您可以从我的github repo

获得Python脚本

Image description