如何使用IAM Auth将python websocket连接到AppSync订阅?

2024-06-12 12:34:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望python打开AWS AppSync订阅并接收更新

官方博客正在讨论如何使用IAM验证websocket。
https://aws.amazon.com/blogs/mobile/appsync-websockets-python/

它遵从this document about signing http requests,它没有提到websocket,因此没有提供启动websocket应该包含、排除或更改哪些内容的线索。我担心在发生任何事情之前,我要花相当长的时间去消化、适应和测试

IAM_header = {
    "accept": "application/json, text/javascript",
    "content-encoding": "amz-1.0",
    "content-type": "application/json; charset=UTF-8",
    "host": <HOST>,
    "x-amz-date": <ISO_UTC_TIMESTAMP>,,
    "X-Amz-Security-Token": <IAM SECURITY TOKEN>,
    "Authorization": <IAM SIGNATURE>
}

我不认为有人曾经这样做过,并且可以分享一些见解或代码

IAM_签名
在创建websocket的上下文中,我们要签名的“请求\u参数”是什么

到目前为止,我已经将详细信息输入到请求中,并将其中的标题填充到websocket中。这一努力得到了这样的答复:

消息

<&书信电报;{“有效负载”:{“错误”:[{“错误类型”:“BadRequestException”,“消息”:"我们计算的请求签名与您提供的签名不匹配。请检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。\n\n此请求的规范字符串应为\n'POST\n/graphql/connect\n\n host:iutysrbt2qxx7ekx2xi.appsync api.ap-southern-2.amazonaws.com\nx-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934852b855\nx amz日期:20200730T044539Z\nx amz安全令牌:FWOGZPGV9HFLZGBDIPPLCK1HMSXYJAPQB299GREKYALLKPOGFMI2VZSIYCPLBXP7ZDGGO4NFSGEAULYM9GMMKGIJ1CK/0YCKBNAWWPISA6NXDMS=\n\n\n\n\n\n主机;x-amz-content-sha256;x-amz-amz-date;x-amz-CAA1367CFB1367F安全令牌f8a'\n\n要签名的字符串应该是\n'AWS4-HMAC-SHA256\n20200730T044539Z\n20200730/ap-Southwest-2/appsync/AWS4\u请求\n29a5ecebf83602958c569f1ae18b5fa8353dd04833a833885'\n“}”,类型:“连接错误”}

所以我需要计算出“规范字符串”、“要签名的字符串”,以及如何将它们填充到授权头中


Tags: 字符串comawsjsonhostdateapplication错误