【问题标题】:AWS Boto SNS invalid parameter topic nameAWS Boto SNS 参数主题名称无效
【发布时间】:2015-02-19 06:38:56
【问题描述】:

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

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

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

问题是我什至没有一个名为主题名称的参数。 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')

任何建议,我现在正在努力反对这个。

【问题讨论】:

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


    【解决方案1】:

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

    试试这个:

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

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

    【讨论】:

    • 谢谢,这实际上是有道理的,经过更多挖掘后,我了解到“topic_arn”和“target_arn”在可以发送到哪些端点方面存在差异。对于移动推送,您需要使用“target_arn”发送,使用“topic_arn”发送的普通 SNS 主题。似乎也不可能直接发送到移动推送应用程序(针对其所有设备)。
    • 谢谢,我也在为 python 的 boto 文档苦苦挣扎。一切都是正确的,但是“message=*, subject=*, target_arn=*”..不知道需要这样解决..非常感谢你们! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 2010-11-16
    • 1970-01-01
    相关资源
    最近更新 更多