Агент kinesis для лямбда, как получить исходный файл и сервер

У меня есть агент kinesis, который передает много информации из файлов журнала в потоки kinesis, и у меня есть функция Lambda, которая анализирует информацию. На Lambda в дополнение к строке мне нужно знать имя исходного файла и имя машины, возможно ли это?


person Avi Zloof    schedule 03.07.2016    source источник


Ответы (2)


Вы можете добавить его к данным, отправляемым на Kinesis.

Lambda получает Kinesis записей в виде строки base64, вы можете закодировать в эту строку JSON такой формы:

{
  "machine": [machine],
  "data": [original data]
}

И далее при обработке записей на Lambda:(nodejs):

let record_object = JSON.parse(new Buffer(event.Records[0].kinesis.data, 'base64').toString('utf8'));

let machine = record_object.machine;
let data = record_object.data;
person johni    schedule 28.08.2016

Предположим, вы используете Kinesis Agent для создания потока данных. Я вижу, что сообщество открытого исходного кода добавило ADDEC2METADATA в качестве параметра предварительной обработки в агенте. исходный код

Убедитесь, что исходный файл содержимого имеет формат JSON. Если исходным форматом является CSV, сначала используйте преобразователь CSVTOJSON, чтобы преобразовать его в JSON, а затем передайте его преобразователю ADDEC2METADATA, как показано ниже.

Откройте agent.json и добавьте следующее:

    "flows": [
        {
            "filePattern": "/tmp/app.log*", 
            "kinesisStream": "my-stream",
            "dataProcessingOptions": [
{
                    "optionName": "CSVTOJSON",
                    "customFieldNames": ["your", "custom", "field", "names","here", "if","origin","file","is","csv"],
                    "delimiter": ","
                },
                {
                    "optionName": "ADDEC2METADATA",
                    "logFormat": "RFC3339SYSLOG"
                }
            ]
        }
    ] 
}

Если ваш код работает из контейнера/ECS/EKS и т. д., где исходная информация не так проста, как сбор информации о «голом железе» EC2, используйте декларативный параметр «ADDMETADATA», как показано ниже в файле agent.log:

{ 
    "optionName": "ADDMETADATA",
   "timestamp": "true/false",
   "metadata": {
   "key": "value",
      "foo": {
        "bar": "baz"
      }
    }
  }
person ChaitanyaBhatt    schedule 31.07.2019