如何从 Java 中编写的 AWS Lambda 函数读取 S3 文件?

How to read S3 file from AWS Lambda Function written in Java?

我写了一个 AWS Lambda 函数,它的 objective 是在调用时 - 它读取文件的内容说 x.db,从中获取特定值 return 到 caller.But 这个 x.db 文件会不时更改。所以我想将这个 x.db 文件上传到 S3 并像读取文件一样从 AWS Lambda 函数读取它。

        File xFile = new File("S3 file in x.db");

如何从 Java 中编写的 AWS Lambda 函数中读取此类 x.db S3 文件?

使用Java S3 SDK。如果您将名为 x.db 的文件上传到 S3 存储桶 mybucket,它将看起来像这样:

import com.amazonaws.services.s3.*;
import com.amazonaws.services.s3.model.*;

...
AmazonS3 client = new AmazonS3Client();
S3Object xFile = client.getObject("mybucket", "x.db");
InputStream contents = xFile.getObjectContent();

此外,您应该确保分配给 lambda 函数的角色可以访问 S3 存储桶。应用这样的政策:

"Version": "2012-10-17",
"Statement": [{
  "Effect": "Allow",
  "Action": [
    "s3:*"
  ],
  "Resource": [
    "arn:aws:s3:::mybucket",
    "arn:aws:s3:::mybucket/*"
  ]
}]