#python-3.x #elasticsearch #aws-lambda
Вопрос:
Я создал лямбда-функцию python для извлечения любого набора изменений, произошедших в route53, и отправки его в Elasticsearch.
Ниже приведена моя функция Python
import json
import uuid
import sys
import re
from datetime import datetime
from elasticsearch import Elasticsearch, RequestsHttpConnection
from elasticsearch import TransportError
def lambda_handler(event, context):
mydump = json.dumps(event)
myload = json.loads(mydump)
indexName = "routeindexname"
logstashIndex = indexName '-' datetime.now().strftime("%Y.%m.%d")
es = Elasticsearch(["192.168.21.150"], port=8200, connection_class = RequestsHttpConnection)
es.indices.create(index=logstashIndex, ignore=400)
id1 = uuid.uuid4()
es.index(index=logstashIndex, id=str(id1), body=myload)
print("Successly Created - Index: {}".format(logstashIndex))
return {
'statusCode': 200,
'body': json.dumps('Successfully exported logs to ELK')
}
Ниже приведен вывод моей консоли
START RequestId: c45ab4ff-58c4-47d9-a747-e2af40b02z23 Version: $LATEST
END RequestId: c45ab4ff-58c4-47d9-a747-e2af40b02z23
REPORT RequestId: c45ab4ff-58c4-47d9-a747-e2af40b02z23 Duration: 3003.62 ms Billed Duration: 3000 ms Memory Size: 128 MB Max Memory Used: 28 MB
2021-09-06T13:35:30.809Z c45ab4ff-58c4-47d9-a747-e2af40b02z23 Task timed out after 3.00 seconds
Когда я ставлю print(id1)
ниже id1
, он отображается в консоли, но после этого, похоже, ничего не работает.
Похоже es.index
, это не работает.
Для проверки при проверке индекса elasticsearch также не был создан.
Эластичный поиск = 7,14
Python = 3,8
Не уверен, что я чего-то не понимаю.
Ответ №1:
Я все понял. С лямбда-функцией все в порядке.
Мне пришлось добавить соответствующий VPC, подсеть и безопасность, такие же, как стек ELK, в функцию Lambda, и это сработало.