gpt4 book ai didi

amazon-web-services - AWS Lambda 函数检索 S3 文件的速度极慢

转载 作者:行者123 更新时间:2023-12-04 07:52:58 31 4
gpt4 key购买 nike

我有一个 Lambda 函数,每次执行时都需要从 S3 读取文件。
文件很小,大概200字节左右,S3桶在US Standard region,Lambda函数在us-east-1 region(所以是同一个region)。读取文件需要 10 到 15 秒,为什么这么慢?

谢谢。

编辑:一些代码

long start = System.nanoTime();
AmazonS3Client s3Client = new AmazonS3Client();
S3Object propertyFile = null;
try {
propertyFile = s3Client.getObject(S3_BUCKET_NAME, S3_PROPERTY_FILE);
} catch (Exception e) {...}
try (InputStream in = propertyFile.getObjectContent()) {
PROPERTIES.load(in);
} catch (Exception e) {...}
LOGGER.debug("S3 access " + (System.nanoTime() - start));

编辑#2:在布鲁克斯的建议之后我做了
AmazonS3Client s3Client = new AmazonS3Client(new InstanceProfileCredentialsProvider());

我得到这个错误:
Unable to load credentials from Amazon EC2 metadata service

编辑#3:
分配给 Lambda 函数的内存是 256MB,当我分配 1024MB 时,它需要 3-4 秒,仍然太慢(从我的计算机本地测试时大约需要 1-2 秒)。

最佳答案

我建议使用 ProfileCredentialsProvider并在 Lambda 函数执行之间缓存 S3 客户端实例:

public class MyLambda { // No matter you implement standard AWS SDK interfaces or not

private final AmazonS3Client s3Client = new AmazonS3Client(new ProfileCredentialsProvider());

public String sayHello(Request request, Context context) {
S3Object s3Obj = s3Client.getObject(request.getBucket(), request.getKey());
return S3Utils.getContent(s3Object); // Some util which retrieves object content
}
}

问题是设置管理连接池和其他资源的 S3 客户端需要一些时间。

关于amazon-web-services - AWS Lambda 函数检索 S3 文件的速度极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35299013/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com