我正在尝试通过用 Java 编写的 AWS Lambda 函数列出 S3 存储桶上的 key 。在本地运行代码工作正常(使用硬编码凭据)。
在 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 运行类似的东西是可行的
最佳答案
解决方案是为 Lambda 提供更多内存以供使用。对于大多数运行,Lambda 报告大约 111 MB 用于执行简单的 S3 listObjects
命令。所以 128 MB 还不够,512MB 就可以了。
关于java - 从java aws lambda访问s3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33107144/