Ошибка в журналах cloudwatch при попытке индексации данных в кластере Amazon ES
Я следую этому руководству, чтобы автоматически проиндексировать все мои потоки DynamoDB в созданный мной сервисный кластер Amazon ElasticSearch.
Я следовал за этим шаг за шагом, и я создал все политики разрешений.
Однако, когда я тестирую, в моем кластере Amazon ES ничего не индексируется. Когда я проверяю CloudWatch, я вижу этот журнал:
('ERROR: ', 'Traceback (most recent call last):
File "/var/task/lambda_function.py", line 123, in lambda_handler
return _lambda_handler(event, context)
File "/var/task/lambda_function.py", line 219, in _lambda_handler
post_to_es(es_payload) # post to ES with exponential backoff
File "/var/task/lambda_function.py", line 86, in post_to_es
es_ret_str = post_data_to_es(payload, es_region, creds, es_endpoint, \'/_bulk\')
File "/var/task/lambda_function.py", line 53, in post_data_to_es
req = botocore.awsrequest.create_request_object(params)
File "/var/runtime/botocore/awsrequest.py", line 314, in create_request_object
request_object.context.update(r[\'context\'])
KeyError: \'context\'
')
Я не понимаю проблему. Все, что я знаю, это то, что моя функция Lambda успешно запускает каждый поток DynamoDB и может отправлять журналы в CloudWatch, но не может индексировать эти данные в Amazon ES.
Кто-нибудь, пожалуйста, может помочь мне решить эту проблему?
1 ответ
В последнее время произошло резкое изменение в коде botocore, используемом aws lambda.
Полученная строка кода:req = botocore.awsrequest.create_request_object(params)
С новыми изменениями они ожидают, что параметры аргумента будут содержать поле контекста.
Поэтому, пожалуйста, добавьте поле контекста к аргументу params: Пример: params = {'method': method, 'url': proto + host + path, 'region': region, 'headers': {'Host': host}, 'body': payload,'context': {'signing': {'region': 'us-east-1'}}}
Как только вы сделаете вышеуказанные изменения, ваша лямбда сможет успешно работать.
Подробности: В файле botocore.awsrequest изменение кода в строке 314 вызывает эту проблему. https://github.com/boto/botocore/commit/28b8831f5f8518bef5accf994fc377c58a3569f7