使用boto通过AWS SNS发送SMS的示例脚本

时间:2016-11-25 09:59:42

标签: python perl sms amazon-sns boto3

如何使用boto(或其他python | perl库)通过AWS SNS将短信直接发送到手机号码?

约束:

  • 不使用AWS Lambda函数
  • 不使用SNS主题直接订阅手机号码

我的使用案例:使用AWS SNS使用AWS SMS作为端点协议从Nagios发送SMS警报。

3 个答案:

答案 0 :(得分:10)

这里是使用boto3通过SNS直接发布到电话号码的代码。如果您收到有关PhoneNumber参数的错误,则需要升级您的boto版本。记住SNS当前支持直接发布到电话号码(PhoneNumber)或推送通知端点(targetArn)是很重要的。另请注意,TopicArn,PhoneNumber和TargetArn都是互斥的,因此您只能为每个发布指定其中一个。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/js/select2.min.js"></script>
<div class="styleselect">
  <select data-placeholder="Select a Category" name="cat" id="cat" class="select2" multiple>
    <option selected value="all">All Categories</option>
    <option value="EN">England</option>
    <option value="GR">Greece</option>
    <option value="US">USA</option>
    <option value="IT">Italy</option>
  </select>
</div>

答案 1 :(得分:1)

只需在必填字段中替换,即可实现此功能。

import boto3
# Create an SNS client
client = boto3.client(
    "sns",
    aws_access_key_id="your_access_key_id",
    aws_secret_access_key="you_secret_access_key",
    region_name="us-east-1"
)

# Send your sms message.
client.publish(
    PhoneNumber="your_phone_number",
    Message="Hello World!"
)

要发送给多个联系人,请参阅here

答案 2 :(得分:0)

下面的脚本对我有用,只需替换脚本中定义为常量的必需参数即可。下面的脚本还可以处理批量短信给多个收件人

import json
import boto3
import os


ACCESS_KEY = <your key>
ACCESS_SECRET = <your secret>
AWS_REGION = <your region>

RECIPIENT_NUMBERS = [<recipient number list>]
SENDER_ID = <sender_id>
MESSAGE = <your message>

sns = boto3.client('sns', aws_access_key_id=ACCESS_KEY,
               aws_secret_access_key=ACCESS_SECRET,
               region_name=AWS_REGION)
for number in RECIPIENT_NUMBERS:
    response = sns.publish(
        PhoneNumber=number,
        Message=MESSAGE,
        MessageAttributes={
            'AWS.SNS.SMS.SenderID': {'DataType': 'String',
                                 'StringValue': SENDER_ID},
            'AWS.SNS.SMS.SMSType': {'DataType': 'String',
                                'StringValue': 'Promotional'}
        }
    )
    print(response)