来自 s3 的简单 list_objects 在 AWS Lambda 中的连接池初始化非常慢python|boto3

问题描述

也许有人可以将我指向一个实际显示解决方案的帖子,但我似乎找不到,所以我再次发布。

我在 AWS Lambda 中运行了一些基于 Python 的程序来列出 S3 中的对象(除其他外)。看起来在 urllib3 连接池中创建到 s3 位置的 HTTP 连接需要很长时间(30 秒以上)。

我看过很多鼓励增加 Lambda 函数内存的帖子。 任何人都可以建议为什么这是正确的方法(例如,什么会占用所有内存或 cpu 周期?)。

代码如下:

import boto3
import functools

s3 = _s3_client()
result = s3.list_objects_v2(
  Bucket=MY_BUCKET,MaxKeys=1000,)

# cache the boto client so we don't reinstantiate everytime
@functools.lru_cache()
def _s3_client(**kwargs):
    return boto3.client("s3",**kwargs)

更重要的是日志(注意创建 https 连接所需的 32 秒):

{"timestamp": "2021-03-19T01:00:48.619532+0000","levelname": "DEBUG","name": "urllib3.connectionpool","message": "Starting new HTTPS connection (1): my-bucket.s3.us-east-1.amazonaws.com:443","aws_request_id": "53e46a72-8d20-49e8-91ac-554614a0573f"}
{"timestamp": "2021-03-19T01:01:20.761505+0000","message": "https://my bucket.s3.us-east-1.amazonaws.com:443 \"GET /?list-type=2&max-keys=1000&encoding-type=url HTTP/1.1\" 200 None","aws_request_id": "53e46a72-8d20-49e8-91ac-554614a0573f"}
{"timestamp": "2021-03-19T01:01:27.599037+0000","name": "botocore.parsers","message": "Response headers: {'x-amz-id-2': 'A7hCoKEZStLZ++dYMrKo6RAkrelFRKLt04KgtgzdvYD1KkZgLYNKu7HU54rN2oxwWYaMyzIWdlg=','x-amz-request-id': 'ED1V3W53HC7VPZAP','Date': 'Fri,19 Mar 2021 01:01:10 GMT','x-amz-bucket-region': 'us-east-1','Content-Type': 'application/xml','transfer-encoding': 'chunked','Server': 'AmazonS3'}","aws_request_id": "53e46a72-8d20-49e8-91ac-554614a0573f"}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)