我试图让我的LexBot与Lambda通信,所以我遵循了创建请求、签名和所需的一切的过程。但我不确定是否需要从Python导入某些东西。当我准备发布消息时,它失败了。签名和auth头文件都创建好了。
请各位指教,任何帮助将不胜感激!
我以这些文章为指导:https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html
https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
print ('\nBEGIN REQUEST++++++++++++++++++++++++++++++++++++')
print ('Request URL = ' + endpoint)
print('\n' + authorization_header)
print('\nX-Amz-content-Sha256 header is' + payload_hash)
r = requests.Post ('myendpoint'+ canonical_uri, data=payload,
headers=headers)
data = r.json()
lex_message = data['message']
print ('' + lex_message)
所以我假设我的问题来自这段代码,注意,我删除了我的端点。
也不确定请求中的数据包含什么内容。
3条答案
按热度按时间aij0ehis1#
我遇到了同样的错误,但对于
GET
使用python3.8
。对GET
/POST
的支持已经从python3.8
中的botocore.vendored.requests
中删除。作为一种解决方法,您可以使用
python3.7
作为lambda,它在一段时间内仍然有效。但是,您将得到一个警告,对它的支持也将在2020/03/31
上删除:因此,使用
pip
获得requests
包,还是使用下面链接中显示的层,没有太多选择。更多信息请参见Upcoming changes to the Python SDK in AWS Lambda
hiz5n14c2#
在这个拉取请求中,他们建议不要再使用requests https://github.com/aws-quickstart/taskcat/pull/343的供应商版本。不幸的是,许多AWS代码示例仍然使用它。
您可以使用官方的“requests”库(https://requests.readthedocs.io/en/master/),替换为:
与
ajsxfq5m3#
下面是来自AWS的一个示例,它显示了如何使用urllib3库来实现相同的https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html
在此放置相关部分,以防链接失效:
另外,我已经测试过了,这段代码可以在Python 3.9 Lambda Runtime中开箱即用,不需要安装额外的软件包