我使用aws elasticsearch并且我想将数据从dynamodb导入到elasticsearch,我不想使用river,因为Elasticsearch river API已被弃用,任何替代品?
答案 0 :(得分:3)
我将在您的表上启用dynamodb流,然后编写一个lambda函数,该函数从流中读取数据并将其插入到elasticsearch中。亚马逊有一个sample lambda function,它将数据从kinesis传输到elasticsearch。修改它以使用dynamodb流应该非常容易。
答案 1 :(得分:0)
我使用Python。
请参阅下面的示例,该示例将您的Lambda函数验证为ES。 然后,您可以使用ElasticSearch Python库。
from __future__ import print_function
import json
import boto3
from elasticsearch import Elasticsearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth
def lambda_handler(event, context):
session = boto3.session.Session()
credentials = session.get_credentials()
print(credentials.access_key)
print(credentials.secret_key)
print(credentials.token)
print(session.region_name)
awsauth = AWS4Auth(credentials.access_key,
credentials.secret_key,
session.region_name, 'es',
session_token=credentials.token)
es = Elasticsearch(
[ "YOUR ES ENDPOINT" ],
http_auth=awsauth,
use_ssl=True,
verify_certs=True,
connection_class=RequestsHttpConnection
)
print(es.info())
[...]
您需要适当的Lambda函数角色。我建议阅读此博客,该博客尚未完全更新,但适用于IAM角色。
我在博客中提到的Lambda Blueprint仍然可用,但目前还不是。
希望这个帮助