我尝试使用resourcesgrouptaggingAPI中的get_resources并对其进行分页。我是用lambda函数和boto3做的。
然而,使用base = client.can_paginate('get_resources')
会返回False
,但在documentation内,它表明它适用于get_resources
。
另一个人遇到了这个问题并创建了一个问题 here. 现在它似乎对他有用,所以我试图调查会导致控制台lambda环境无法工作的原因。
为了清楚起见,这是我的声明和初始化:
client = boto3.client('resourcegroupstaggingapi')
base = client.can_paginate('get_resources') #returns False
paginator = client.get_paginator('get_resources')
因此,使用控制台进行分页是否存在问题?
答案 0 :(得分:1)
AWS lambda环境并不总是运行最新版本的boto3 / botocore。它目前提供botocore版本1.5.52
(来源:https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html)。您尝试访问的分页器已在1.5.53(来源:https://github.com/boto/botocore/commit/144dda7b63f9eccaeae66c040a281208b43e2678)
因此,您尝试使用的版本的botocore尚不支持get_resources
的分页。在这种情况下,您需要捆绑一个版本的boto3 / botocore,它在捆绑之前通过安装支持lambda的功能。
E.g。如果你的源代码在src:
目录中 pip install boto3==1.4.4
cp -r /usr/local/lib/python2.7/site-packages/* src/
cd src
zip -rq lambda.zip .