从java aws lambda访问s3

时间:2015-10-13 15:49:08

标签: java amazon-web-services amazon-s3 aws-lambda aws-java-sdk

我尝试使用Java编写的AWS Lambda函数列出S3存储桶上的密钥。在本地运行代码工作正常(使用硬编码凭据)。

在Lambda中运行相同的Java代码时,它会挂起listObjects

AmazonS3 s3client = new AmazonS3Client(new BasicAWSCredentials("XXXXXXXXXXXx",
           "XXXXXXXXXXZZZZZZZZZZz"));


ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
        .withBucketName(bucketName)
        .withMaxKeys(10);
ObjectListing objectListing;

do {
    objectListing = s3client.listObjects(listObjectsRequest);

硬编码用户凭据和Lambda执行角色都具有对s3的完全访问权限。

为什么S3访问会挂起而没有错误?权限配置错误了什么?

使用NodeJS在Lambda中运行类似的东西

1 个答案:

答案 0 :(得分:2)

解决方案是为Lambda提供更多内存。对于大多数运行,Lambda报告大约111 MB,用于执行简单的S3 listObjects命令。所以128 MB是不够的,512MB工作正常。