Как исправить: IOError - В моей лямбда-функции нет gzip-файла (LogzIOCloudwatchShipper) - PullRequest
0 голосов
/ 27 мая 2019

Я развернул приложение репо без сервера в своей учетной записи AWS. Приложение представляет собой LogzioCLoudWatchShipper. Мое намерение состоит в том, чтобы установить события cloudwatch как триггер для этой лямбда-функции, которая затем будет выполнять эту лямбду, извлекать данные журнала из события и отправлять данные журнала в logz.io.

Когда я тестирую лямбда-функцию в консоли AWS, я получаю сообщение об ошибке: «errorType»: "IOError", "errorMessage": "Не распакованный файл"

Я успешно развернул безсерверное приложение репо и вижу код лямбды в консоли AWS.

Я указал событие со следующей разметкой:

{"awslogs":{"data":"aGVsbG8gd29ybGQ=}}

Вот функция, которая извлекает данные журнала из события. Эта функция является частью лямбда-функции.

def _extract_aws_logs_data(event):
# type: (dict) -> dict
try:
    logs_data_decoded = event['awslogs']['data'].decode('base64')
    logs_data_unzipped = gzip.GzipFile(fileobj=StringIO(logs_data_decoded)).read()
    logs_data_dict = json.loads(logs_data_unzipped)
    return logs_data_dict
except ValueError as e:
    logger.error("Got exception while loading json, message: {}".format(e))
    raise ValueError("Exception: json loads")

Я также добавил событие в свой блок функций serverless.yaml:

  handler: lambda_function.lambda_handler //From AWS console                                                                                                                                                                         
  events:                                                                                                                                                                                                          
    - cloudwatchEvent:                                                                                                                                                                                             
        event:                                                                                                                                                                                                     
          source:                                                                                                                                                                                                  
            - 'custom.servicename'                                                                                                                                                                                
          detail-type:                                                                                                                                                                                             
            - 'New_Event'                                                                                                                                                                                 
~
...