我将python与boto api一起用于:
我启动了我自己的一个AMI,它将模拟StatusCheckFailed条件。 如果我转到AWS控制台>;SQS,我可以看到我收到了警报通知。我也可以在AWS控制台中查看JSON格式的内容。在
当我使用python和SQS api时,我可以:
q = sqs.lookup(queue_name)
)msg = q.read()
)b = message.get_body_encoded()
)message.get_body()
结果不可读。在
get_body_encoded
得到一个不带分隔符的字符串。e、 g
TypeNotificationMessageId02a8ce9dc21e55eaaeca83b5258563ffTopicArnarnawssnsuswest21888888879statuscheckalarm17122223479SubjectStatusCheckAlarmbadvmstatusalarminUSWest2MessageAlarmNamebadvmstatusalarmAlarmDescriptionstatuscheckfori50602c5abadvmAWSAccountId11233333333NewStateValueALARMNewStateReasonThresholdCross....`
get_body
使您无法阅读编码。
如何获得JSON格式的消息体,例如,AWS控制台的SQS部分显示的消息体?在
get_body()
的结果返回一个JSON格式的字符串。在我通过创建一个SQS队列和一个SNS通知主题来重新创建您的情况,将SQS队列订阅到SNS主题,然后创建一个将通知推送到SNS主题的警报。然后我触发了一个警报情况,并通过Python检索结果:
对
^{pr2}$get_body()
的响应是一个包含JSON的字符串。这可以使用JSON库进行解析:我在AWS论坛上读过类似的文章,它对我很有用。在
如果您知道消息将不会被base64编码,则可以更改从队列中读取消息的代码,使其不会尝试解码消息,如下所示: 平方英尺=boto.connect U sqs公司() 队列=sqs.get_队列('myqueue') 队列队列(boto.sqs.消息.RawMessage)
相关问题 更多 >
编程相关推荐