gpt4 book ai didi

java - 使用 Java 的 AWS Lambda 无法从 S3 获取文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:36 26 4
gpt4 key购买 nike

我正在使用 AWS Lambda 创建一个非常简单的示例,但在使用 Java 运行时时遇到问题。我必须从我的存储桶中读取 S3 对象,并且使用如下所示的 NodeJS 示例我没有问题

var S3FS = require('s3fs');

exports.handler = (req, res) => {
var s3Options = {
region: 'eu-west-3',
accessKeyId: 'key',
secretAccessKey: 'secret'
};

var fsImpl = new S3FS('mybucket', s3Options);

fsImpl.readFile("myfile",function (err,data) {
if (err) throw err;
console.log(data.toString());
});
}

如果我尝试类似的 Java 示例,我的函数总是超时(即使我增加到 1 分钟)

context.getLogger().log("Before");
BasicAWSCredentials awsCreds = new BasicAWSCredentials("key", "secret");
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withRegion("eu-west-3")
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.build();
context.getLogger().log("client created");
S3Object object = s3.getObject(
new GetObjectRequest(bucketName, key));
context.getLogger().log("After");

创建 S3 客户端时该函数始终阻塞。我知道我可以避免在 Lambda 中使用 key 和 secret ,但也可以通过这种方式阻止函数。这不是一个策略问题,因为我正在从相同的 Lambda 配置测试这些示例,所以我认为这与 Java AWS S3 API 相关。有什么建议么?

最佳答案

Java lambda 终于可以使用 defaultClient() 工作了而不是standard() AmazonS3ClientBuilder 的方法。

这两种方法之间的区别在于凭据,从 env 检索或作为参数传递。可能有一个我没有看到的错误配置,但无论如何,更清晰的错误可能会很有用

关于java - 使用 Java 的 AWS Lambda 无法从 S3 获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49100255/

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