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

时间:2016-04-06 21:44:50

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

我编写了一个AWS Lambda函数,它的目标是在调用时 - 它读取文件的内容,例如x.db,从中获取一个特定的值并返回给调用者。但是这个x.db文件发生了变化不时。所以我想将这个x.db文件上传到S3并从AWS Lambda函数读取它就像读取文件一样。

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

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

1 个答案:

答案 0 :(得分:6)

使用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/*"
  ]
}]