我尝试使用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中运行类似的东西
答案 0 :(得分:2)
解决方案是为Lambda提供更多内存。对于大多数运行,Lambda报告大约111 MB,用于执行简单的S3 listObjects
命令。所以128 MB是不够的,512MB工作正常。