Машинопись для AWS обработчиков лямбда-выражений шлюза HTTP API - PullRequest
7 голосов
/ 26 мая 2020

В настоящее время я использую следующее для ввода лямбда-функций для RestApi:

import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
export const handler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => {}

Это некорректно работает с новым AWS HTTP API шлюза, где метод HTTP может быть получен с помощью event.requestContext.http.method.

Есть ли другие типы, которые мне следует использовать?

1 Ответ

2 голосов
/ 29 мая 2020

Есть ли другие типы, которые мне следует использовать?

Я так не думаю. Типы доступны через ОпределенноТипед. [1] Просматривая некоторые вопросы, касающиеся типов «aws -lambda», вы заметите, что типы шлюза API не обновляются часто. [2]

Кроме того, версия формата полезной нагрузки изменена для API Gateway, см. [3]:

Версия формата полезной нагрузки определяет формат данных, которые API-шлюз отправляет на Интеграция Lambda и то, как API Gateway интерпретирует ответ Lambda. Если вы не укажете версию формата полезной нагрузки, консоль управления AWS по умолчанию использует последнюю версию. Если вы создаете интеграцию Lambda с помощью AWS CLI, AWS CloudFormation или SDK, вы должны указать payloadFormatVersion. Поддерживаемые значения: 1.0 и 2.0.

Я думаю, вы используете последнюю версию, которая 2.0 . Версия 2.0 предоставляет HTTP-метод как свойство requestContext.http.method .

Версия 1.0 предоставляет HTTP-метод как свойство requestContext.httpMethod .

Решение

Вы можете: 1.) написать типизацию для новой версии формата полезной нагрузки и отправить ее в DefinficTyped через PR для пакета «@ types / aws -lambda» или 2.) настроить свой API-шлюз для использования версия 1.0.

Честно говоря, я не знаю, возможно ли использование полезной нагрузки версии 1.0 для HTTP API. Возможно, AWS применяет последнюю версию к новым API, поскольку нет необходимости поддерживать старый формат.

Ссылки

[1] https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/aws-lambda/trigger/api-gateway-proxy.d.ts
[2] https://github.com/DefinitelyTyped/DefinitelyTyped/issues/38720#issuecomment -586051966
[3] https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...