[英]AWS Lambda with Java unable to GET a file from S3
我正在使用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中使用密鑰和機密,但也可以通過這種方式來阻止功能。 這不是政策問題,因為我正在從相同的Lambda配置測試這些示例,所以我認為這與Java AWS S3 API有關。 有什么建議么?
Java lambda最終可以使用AmazonS3ClientBuilder的defaultClient()而不是standard()方法工作。
這兩種方法之間的區別是憑證,憑證是從env檢索或作為參數傳遞的。 我可能沒有看到錯誤的配置,但是無論如何,更清晰的錯誤可能會有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.