从javaawslambda访问s3

从javaawslambda访问s3,java,amazon-web-services,amazon-s3,aws-lambda,aws-java-sdk,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 listObjectsReque

我正试图从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访问会毫无错误地挂起?什么权限配置错误


在Lambda中运行与NodeJS works类似的程序

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

你怎么知道它挂起了?为什么在不需要任何凭据的情况下硬编码凭据?只需依赖假定的Lambda执行角色。如果尝试假定的Lambda执行角色(并随后授予该角色管理员权限,以防万一)。打印listObjects上方的日志,未到达listObjects之后的日志。本地执行listObjects大约需要一秒钟。Lambda函数超时是多少?默认值为3秒。另外,CloudWatch日志是否显示Lambda函数超时?我用了60秒,是的CloudWatch显示timeout errorEvent simpler命令没有返回:System.out.println(“start”);s3client.doesBucketExist(bucketName);系统输出打印项次(“停止”);(未显示停止)