【问题标题】:How to read S3 file from AWS Lambda Function written in Java? [duplicate]如何从用 Java 编写的 AWS Lambda 函数读取 S3 文件? [复制]
【发布时间】:2016-07-27 13:16:06
【问题描述】:

我编写了一个 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 文件?

【问题讨论】:

  • 与从任何地方运行的 Java 读取 S3 文件的方式相同。
  • 谢谢马克,我从来没有这样做过,这个领域的新手,我会按照建议尝试。在发帖之前我也搜索过,但没有找到任何东西。

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


【解决方案1】:

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

【讨论】:

  • 感谢 Atalylor,我会按照建议进行操作,然后在此处更新结果。
  • 感谢ataylor,此解决方案按建议工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 2015-04-18
相关资源
最近更新 更多