如何使用boto(或其他python | perl库)通过AWS SNS将SMS直接发送到手机号码?使用boto通过AWS SNS发送SMS的示例脚本
约束:
- 没有使用AWS lambda函数
- 不使用SNS主题订阅手机号码直接
我的使用情况:使用AWS SNS从Nagios的发送短信提醒使用AWS短信作为端点协议。
如何使用boto(或其他python | perl库)通过AWS SNS将SMS直接发送到手机号码?使用boto通过AWS SNS发送SMS的示例脚本
约束:
我的使用情况:使用AWS SNS从Nagios的发送短信提醒使用AWS短信作为端点协议。
下面是使用boto3通过SNS直接发布到电话号码的代码。如果您收到有关PhoneNumber参数的错误,则需要升级版本boto。请务必记住,SNS当前支持直接发布到电话号码(PhoneNumber)或推送通知端点(targetArn)。还要注意TopicArn,PhoneNumber和TargetArn都是互斥的,因此每个发布只能指定其中的一个。
import boto3
sns_client = boto3.client('sns')
response = sns_client.publish(
PhoneNumber='+12065551212',
Message='This is a test SMS message',
#TopicArn='string', (Optional - can't be used with PhoneNumer)
#TargetArn='string', (Optional - can't be used with PhoneNumer)
#Subject='string', (Optional - not used with PhoneNumer)
#MessageStructure='string' (Optional)
)
print(response)
谢谢,丹尼斯! –
喜丹尼斯, 我想你的代码,但结束了以下错误: 提高error_class(parsed_response,OPERATION_NAME) botocore.exceptions.ClientError:发生错误(OptInRequired)调用的发布操作时:在AWS访问密钥Id需要订阅服务 –
我知道我错过了某些权限,但我已经为此用户添加了SNSFull访问权限。除此之外还有什么需要做的吗? –
#!/usr/bin/python
#sns to sms notification script.
import datetime
import boto3
import sys
body=[]
log_file="/var/log/sns2sms.log"
logf=open(log_file,"a")
mobile_number=str(sys.argv[1])
subject=str(sys.argv[2])
body.append(subject)
for line in sys.stdin:
body.append(line)
message_body="\n".join(body)
now = str(datetime.datetime.now())
log_string=now+" "+mobile_number+" "+message_body+" "
client = boto3.client('sns')
client.publish(
PhoneNumber = mobile_number,
Message = message_body
)
logf.write(log_string)
logf.write("\n")
logf.close()
在必填字段只需更换,你会得到这个工作。
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
你不需要拉姆达或SNS主题,并且在该文档的例子,它是在Java中,但很容易转化。 – polku