如何使用boto(或其他python | perl库)通过AWS SNS将短信直接发送到手机号码?
约束:
我的使用案例:使用AWS SNS使用AWS SMS作为端点协议从Nagios发送SMS警报。
答案 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)