Ошибка в журналах 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