AWS Kinesis Firehose в Лямбда, Лямбда в S3 с использованием Java - PullRequest
0 голосов
/ 10 октября 2019

Для моего объяснения, создал поток пожарных шлангов AWS и настроил функцию лямбда и переместить данные на S3. Firehose к S3 работает нормально без каких-либо проблем. Если я включаю функцию lamda, получая ошибку ниже в S3 bucket bucket.

{"attemptsMade":4,"arrivalTimestamp":1570727830210,"errorCode":"Lambda.FunctionError","errorMessage":"The Lambda function was successfully invoked but it returned an error result."

лямбда-код Java:

public class LambdaFunctionHandler implements RequestHandler<KinesisEvent, String> {

    @Override
    public String handleRequest(KinesisEvent event, Context context) {
        context.getLogger().log("Input: " + event);
        StringBuffer sb = new StringBuffer();
        for (KinesisEventRecord record : event.getRecords()) {
            String payload = new String(record.getKinesis().getData().array());
            if (payload.toLowerCase().contains("scala"))
                sb.append(payload);
            sb.append("\n");
        }

        return sb.toString();
    }
}

В основном, фильтруйте входящие потоковые данные и нажимайте на S3. Также у меня есть несколько вопросов. 1Я передаю данные перфорации JSON в пожарный шланг. Метод "record.getKinesis (). getData ()" будет читать запись построчно и связываться со всей строкой json. 2. письменный журнал регистрации. где проверить мой журнал. Как я могу справиться с этим сценарием? пожалуйста посоветуйте

1 Ответ

1 голос
/ 10 октября 2019

Библиотека AWS Lambda Java Events 2.x поддерживает KinesisFirehoseEvent . Библиотека 1.x не имела этого класса.

Ваш код будет выглядеть примерно так:

public class LambdaFunctionHandler implements RequestHandler<KinesisFirehoseEvent, String> {

    @Override
    public String handleRequest(KinesisFirehoseEvent event, Context context) {
    }
}

В тестовой среде Lambda событие будет выглядеть следующим образом:

{
  "invocationId": "invocationIdExample",
  "deliveryStreamArn": "arn:aws:kinesis:EXAMPLE",
  "region": "us-west-2",
  "records": [
    {
      "recordId": "49546986683135544286507457936321625675700192471156785154",
      "approximateArrivalTimestamp": 1495072949453,
      "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0IDEyMy4="
    }
  ]
}
...