小编kel*_*gan的帖子

如何在AWS Lambda函数中使用boto3通过AWS SNS发送SMS消息?

我想使用boto3发布方法从AWS Lambda函数发送SMS消息,以通过SMS通知用户问题.我的lambda函数是用Python编写的,我使用的是boto3模块.我的lambda函数拥有SNS的完全权限.我有这个代码,

sns = boto3.client('sns')
sns.publish(
    PhoneNumber = '+11234567890',
    Message = 'Simple text message'
)
Run Code Online (Sandbox Code Playgroud)

根据boto3 文档,publish方法接受以下参数,

response = client.publish(
    TopicArn='string',
    TargetArn='string',
    PhoneNumber='string',
    Message='string',
    Subject='string',
    MessageStructure='string',
    MessageAttributes={
        'string': {
            'DataType': 'string',
            'StringValue': 'string',
            'BinaryValue': b'bytes'
        }
    }
)
Run Code Online (Sandbox Code Playgroud)

它需要一个"Message"参数和以下三个参数之一,如文档中所述:

TopicArn(字符串) - 要发布到的主题.

如果未指定TopicArn参数的值,则必须为PhoneNumber或TargetArn参数指定值.

TargetArn(string) - TopicArn或EndpointArn,但不是两者.

如果未指定TargetArn参数的值,则必须为PhoneNumber或TopicArn参数指定值.

PhoneNumber(字符串) - 要向其发送SMS消息的电话号码.使用E.164格式.

如果未指定PhoneNumber参数的值,则必须为TargetArn或TopicArn参数指定值.

执行代码时,将返回参数验证错误.它指出,

输入中的未知参数:"PhoneNumber",必须是以下之一:TopicArn,TargetArn,> Message,Subject,MessageStructure,MessageAttributes".

因此,文档似乎表明PhoneNumber是一个有效的参数,但是在使用时,会发生错误,并且错误的反馈表明PhoneNumber不是可能的参数.我怀疑我错过了一些明显而简单的东西,但可以使用一些帮助.

我知道还有其他途径可以发送短信,例如电子邮件网关和其他供应商提供的解决方案,如Twilio,但我想继续使用基于SNS的路线并了解我哪里出错了.

sms amazon-sns python-2.7 boto3 aws-lambda

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

amazon-sns ×1

aws-lambda ×1

boto3 ×1

python-2.7 ×1

sms ×1