AWS S3 Event notification using Lambda function in Java(在Java中使用Lambda函数的AWS S3事件通知)
问题描述
我正在尝试使用Lambda函数进行S3 PUT事件通知。一旦我将任何新的JSON文件放入/添加到S3存储桶中,就应该调用我的Lambda函数。 我面临的挑战是没有足够的文档来用Java实现这样的Lambda函数。我找到的大部分文档都是Node.js的
我希望,应该调用我的Lambda函数,然后在Lambda函数内部,我希望使用添加的JSON,然后将该JSON发送到AWS ES服务。
但是我应该为此使用哪些所有类呢?有人知道这件事吗?S3和ES均已安装并运行。lambda的自动生成代码是 `
@Override
public Object handleRequest(S3Event input, Context context) {
context.getLogger().log("Input: " + input);
// TODO: implement your handler
return null;
}
下一步是什么??
推荐答案
最后,以下是使用JAVA集成S3-->Lambda-->ES的步骤。
- 在AWS上创建您的S3、Lamba和ES。步骤为here。
在lambda函数中使用以下Java代码获取S3中新添加的对象并将其发送到ES服务。
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(); //Start putting your objects in AWS ES Service String esInput = "Build your JSON string here using S3 objectData"; HttpClient httpClient = new DefaultHttpClient(); HttpPut putRequest = new HttpPut(AWS_ES_ENDPOINT + "/{Index_name}/{product_name}/{unique_id}" ); StringEntity input = new StringEntity(esInput); input.setContentType("application/json"); putRequest.setEntity(input); httpClient.execute(putRequest); httpClient.getConnectionManager().shutdown(); } return "success";}
使用Postman或Sense在ES中创建实际的索引&;对应映射。
完成后,下载并在您的计算机上运行proxy.js。确保设置本post
中建议的ES安全步骤
通过从您的计算机运行http://localhost:9200/_plugin/kibana/URL测试安装程序和Kibana。
全部设置完毕。去吧,把你的仪表盘放在基巴纳。通过在S3存储桶中添加新对象来测试它
这篇关于在Java中使用Lambda函数的AWS S3事件通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在Java中使用Lambda函数的AWS S3事件通知
基础教程推荐
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01