簡體   English   中英

帶有Java的AWS Lambda無法從S3獲取文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM