Amazon SQS вызывает лямбда-функцию

Я пытаюсь запустить функцию через триггер amazon sqs. Триггер работает нормально, но сообщение не передается в функцию my.

Вот моя лямбда-функция

import java.text.SimpleDateFormat;
import java.util.Calendar;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class x implements RequestHandler<RequestClass, ResponseClass> {
    private LambdaLogger logger;

    public void log(String message) {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
        logger.log(sdf.format(cal.getTime()) + "  " + message+"\n");
    }

    public ResponseClass handleRequest(RequestClass request, Context context) {
        this.logger = context.getLogger();
        log("Request " + request);
        if (request == null || (request.getFilename() == null && request.getRecords() == null)) {
            log("No file was passed in");
            throw new RuntimeException("No file was passed in");
        }


        return new ResponseClass(null);
    }
}

И класс запроса - https://pastebin.com/Q1G6bnrA

Когда я вижу журналы, записи всегда нулевые.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
718
2

Ответы 2

Позаботились ли вы о разрешениях роли выполнения Lambda?

От здесь:

Разрешения на роль исполнения

Lambda необходимы следующие разрешения для управления сообщениями в очереди Amazon SQS. Добавьте их в роль выполнения вашей функции.

  • sqs: ReceiveMessage
  • sqs: DeleteMessage
  • sqs: GetQueueAttributes

У меня работает следующий код:

package au.com.redbarn.aws.lambda2lambda_via_sqs;

import java.util.List;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.SQSEvent;
import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage;

import lombok.extern.log4j.Log4j2;

@Log4j2
public class SQSConsumerLambda implements RequestHandler<SQSEvent, String> {

    @Override
    public String handleRequest(SQSEvent input, Context context) {

        log.info("message received");

        List<SQSMessage> records = input.getRecords();

        for (SQSMessage record : records) {
            log.info(record.getBody());
        }

        return "Ok";
    }
}

Может быть, попробуйте использовать SQSEvent вместо вашего собственного RequestClass.

Другие вопросы по теме