我编写了一个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文件?
答案 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/*"
]
}]