我没有看到AWS Kinesis Firehose lambda如何向ElasticSearch(AWS OpenSearch服务)发送更新和删除请求。
Elasticsearch文档API提供了CRUD操作:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html
我找到的示例涉及Create情况,但没有展示如何执行delete
或update
请求。https://aws.amazon.com/blogs/big-data/ingest-streaming-data-into-amazon-elasticsearch-service-within-the-privacy-of-your-vpc-with-amazon-kinesis-data-firehose/https://github.com/amazon-archives/serverless-app-examples/blob/master/python/kinesis-firehose-process-record-python/lambda_function.py
示例中的输出格式没有显示指定create
、update
或delete
请求的方法:
output_record = {
'recordId': record['recordId'],
'result': 'Ok',
'data': base64.b64encode(payload)
}
除了这些示例之外,我没有找到kinesis firehose lambda处理程序应该返回的输出格式的定义。
3条答案
按热度按时间ufj5ltwl1#
Firehose使用lambda函数在将记录传递到目的地之前对其进行转换(在您的案例中为OpenSearch(ES)),因此它们仅用于修改数据的结构,而不能用于影响CRUD操作。Firehose只能将记录插入到特定索引中。如果你需要一个简单的选项来删除记录从ES索引后,一定的时间有一个看“索引旋转”选项时,指定您的消防水带流的目的地。
如果你想在ES中使用CRUD操作,并继续使用Firehose,我建议以原始格式将记录发送到S3桶,然后在对象上传事件上触发lambda函数,该函数将根据有效负载中的字段执行CRUD操作。
对lambda https://github.com/chankh/ddb-elasticsearch/blob/master/src/lambda_function.py中的ES执行CRUD操作的一个很好的例子
构建这个特定示例是为了将DynamoDB流中的数据发送到ES中,但它应该是您的一个很好的起点
yiytaume2#
消防软管只能插入ES。它不能进行更新和删除。如果要执行更新和删除,则需要编写从Kinesis流上的事件中触发的lambda
https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html
iecba09b3#
在开放搜索域查找粒度访问控制中需要授予Crud权限。
请参阅最新的开发人员指南:https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html
参见教程:https://catalog.us-east-1.prod.workshops.aws/workshops/32e6bc9a-5c03-416d-be7c-4d29f40e55c4/en-US/lab-4/lab4-1-os