Использование Micronaut для создания функции AWS Lambda, которая возвращает двоичный контент - PullRequest
0 голосов
/ 25 мая 2018

Я не уверен, является ли это вопросом Micronaut или AWS Gateway.Любая помощь была бы фантастической.

Я пытаюсь использовать инфраструктуру Micronaut для создания лямбда-функции, которая возвращает pdf через AWS API Gateway.Это поддерживается?Что мне нужно изменить, чтобы вернуть двоичный контент?Я попытался изменить тип возвращаемого значения метода на byte [], но похоже, что Content-Type - это всегда application / json.

В качестве небольшого контекста я надеюсь использовать Groovy для написания функциии Dynamic Reports для создания PDF с использованием данных из DynamoDB.

Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Мне теперь удалось заставить это работать.

Я создал объект ответа:

class ReportResponse {

    boolean isBase64Encoded = true
    def headers
    byte[] body
}

и затем в моем обработчике у меня есть:

ReportResponse reports(data, Context context) {
    return new ReportResponse(
        headers:  [ "Content-Type": "application/pdf" ],
        body: JasperExportManager.exportReportToPdf(new 
    MemberReport().getReport(data.queryStringParameters.id)))
}

К сожалению, когда я жестко закодировал заголовки в классе ReportResponse, произошла консольная ошибка (что-то в OpenJDK ..)

Вышеприведенное позволяет мне использовать Lambda Proxying в AWS API Gateway и, таким образом, полный объект запросапередается в функцию.

Единственным другим изменением является установка '* / *' в двоичном виде в AWS API Gateway, что хорошо для моего варианта использования.

0 голосов
/ 25 мая 2018

Вы пробовали с @ Produces ?

...