AWS Лямбда-функция не десериализует полезную нагрузку - PullRequest
0 голосов
/ 29 апреля 2020

Итак, я довольно хорошо разбираюсь в AWS лямбде, но я сбит с толку, почему это не сработает для меня.

У меня настроен класс:

public class ClassToDeserialize {
    private String token;
    private String bucketName;
    private String fileFormat;
    private int index;

    public ClassToDeserialize(String token, String bucketName, String fileFormat, int index) {
        this.token = token;
        this.bucketName = bucketName;
        this.fileFormat = fileFormat;
        this.index = index;
    }

    //PLUS ALL THE GETS AND SETS
}

Тогда в моем лямбда-обработчике:

    public String handleRequest(ClassToDeserialize payload, Context context) {

        final Gson gson = new GsonBuilder().serializeNulls().create();
        System.out.println(gson.toJson(payload));
        return "done";
}

Входные данные, отправленные в эту лямбду, таковы:

{
  "token": "IAMATOKEN",
  "bucketName": "this-is-my-bucket",
  "fileFormat": "text",
  "index": 0
}

Но оператор System.out печатает это:

{
    "token": null,
    "bucketName": null,
    "fileFormat": null,
    "index": 0
}

Может кто-нибудь объяснить мне, почему это может происходить? Я серьезно сбит с толку, потому что я использовал лямбду в течение долгого времени, и я всегда использовал ее таким образом успешно ... Я просто не знаю, что может сломаться сейчас.

1 Ответ

0 голосов
/ 29 апреля 2020

Код указан правильно, вам нужно проверить, что происходит раньше и почему объект с нулевыми значениями достигает этого метода.

Если вы, например, выполните в handleRequest(ClassToDeserialize payload) следующее

payload = new ClassToDeserialize("a","b","c",1), а затем позвоните gson.toJson(payload), и он покажет вам, что весь приведенный выше код верен, и вам нужно копать глубже.

...