AWS Boto SNS无效参数主题名称

时间:2015-02-18 21:16:11

标签: python amazon-web-services boto amazon-sns

我正在尝试使用SNS和Boto(python)向iphone发送推送消息。

当我设置一个正常的SNS主题发布到(替换下面的device ='xxx')时,代码工作正常,但是当我将arn替换为在该应用程序中注册的应用程序或设备的arn时,它会抱怨以下内容:

boto.exception.BotoServerError: BotoServerError: 400 Bad Request
{"Error":{"Code":"InvalidParameter","Message":"Invalid parameter: Topic Name","Type":"Sender"},"RequestId":"ee1fa01c-3b01-52be-9ca2-ed42c6748e40"}

问题是我甚至没有一个名为Topic Name的参数。 http://boto.readthedocs.org/en/latest/ref/sns.html关于发布的部分的boto文档是我见过的最糟糕的文档之一。有人读过吗?

代码如下所示:

from boto.sns import connect_to_region

AWS_KEY = '--REMOVED--'
AWS_SECRET = '--REMOVED--'

def push(subject, message, device = u'arn:aws:sns:eu-west-1:606448161548:app/APNS_SANDBOX/SkygdIphone'):
    c = connect_to_region('eu-west-1', aws_access_key_id = AWS_KEY, aws_secret_access_key = AWS_SECRET)

    c.publish(
        device,
        message,
        subject)

push('subject', 'message')

任何建议,我现在正在敲打这个问题一段时间。

1 个答案:

答案 0 :(得分:3)

我认为问题在于你依赖于publish方法的参数顺序,而它们并不是你所期望的。

相反,试试这个:

c.publish(message=message, subject=subject, target_arn=device)

看看你是否得到了更好的结果。