gpt4 book ai didi

java - 在 Java 中使用 Lambda 函数的 AWS S3 事件通知

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:44 25 4
gpt4 key购买 nike

我正在尝试将 Lambda 函数用于 S3 Put 事件通知。一旦我将任何新的 JSON 文件放入/添加到我的 S3 存储桶中,我的 Lambda 函数就会被调用。我面临的挑战是没有足够的文档来在 Java 中实现这样的 Lambda 函数。我找到的大部分文档都是针对 Node.js 的

我想,应该调用我的 Lambda 函数,然后在该 Lambda 函数内,我想使用添加的 json,然后将该 JSON 发送到 AWS ES 服务。

但是我应该为此使用哪些类?有人对此有任何想法吗? S3 abd ES 都已设置并正在运行。 lambda 的自动生成代码是 `

@Override
public Object handleRequest(S3Event input, Context context) {
context.getLogger().log("Input: " + input);

// TODO: implement your handler
return null;
}

接下来呢??

最佳答案

可以在 Lambda 中处理 S3 事件,但您必须记住,S3Event 对象仅传输对对象的引用,而不是对象本身。要获取实际对象,您必须自己调用 AWS 开发工具包。在 lambda 函数中请求 S3 对象如下所示:

public Object handleRequest(S3Event input, Context context) {
AmazonS3Client s3Client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());

for (S3EventNotificationRecord record : input.getRecords()) {
String s3Key = record.getS3().getObject().getKey();
String s3Bucket = record.getS3().getBucket().getName();
context.getLogger().log("found id: " + s3Bucket+" "+s3Key);
// retrieve s3 object
S3Object object = s3Client.getObject(new GetObjectRequest(s3Bucket, s3Key));
InputStream objectData = object.getObjectContent();
//insert object into elasticsearch
}
return null;
}

现在是相当困难的部分,将这个对象插入到 ElasticSearch 中。遗憾的是 AWS SDK 没有为此提供任何功能。默认方法是对 AWS ES 端点执行 REST 调用。关于如何继续调用 ElasticSearch 实例,有各种示例。

有些人似乎支持以下项目:

Jest - Elasticsearch Java Rest Client

关于java - 在 Java 中使用 Lambda 函数的 AWS S3 事件通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41235593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com