java - 从java aws lambda访问s3

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

我正在尝试通过用 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/

相关文章:

java - 用于过滤资源的 Spring Rest Controller

java - SQLiteException : no such table 的问题

swift - 使用 Swift 3 和 Amazon SDK 显示图像上传到 Amazon S3 的上传进度

java - 在 Arraylist 中搜索时遇到问题

java - android项目的巨大java类,如何拆分它?

java - 为枚举构建一个通用的 DynamoDB 编码

json - Eclipse:使用 Json 编辑器插件自动格式化 JSON 文件,例如 AWS Cloudformation Template

amazon-web-services - 设置 GatewayResponse 时指定的映射表达式无效

amazon-web-services - 配置 AWS Lambda 以访问 S3 存储桶

php - Amazon S3 避免覆盖同名对象