从 java aws lambda 访问 s3

Accessing s3 from java aws lambda

我正在尝试从用 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 相媲美的东西

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