現在、私は以下を使用してRestApiのラムダ関数を入力しています。
import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
export const handler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => {}
これは、HTTPメソッドがevent.requestContext.http.method
を使用してフェッチできる新しいAWSゲートウェイHTTP APIでは正しく機能しません。
他に使用すべきタイプはありますか?
他に使用すべきタイプはありますか?
そうは思わない。タイプはDefinitelyTypedを介して利用できます。 [1]「aws-lambda」タイプに関するいくつかの問題を調べると、API Gatewayタイプが頻繁に更新されていないことがわかります。 [2]
さらに、API Gatewayのペイロード形式のバージョンが変更されました。[3]を参照してください。
ペイロード形式のバージョンは、API GatewayがLambda統合に送信するデータの形式と、API GatewayがLambdaからの応答を解釈する方法を指定します。ペイロード形式のバージョンを指定しない場合、AWSマネジメントコンソールはデフォルトで最新バージョンを使用します。 AWS CLI、AWS CloudFormation、またはSDKを使用してLambda統合を作成する場合は、payloadFormatVersionを指定する必要があります。サポートされる値は1.0および2.0です。
2.0の最新バージョンを使用していると思います。バージョン2.0では、HTTPメソッドをプロパティrequestContext.http.methodとして提供しています。
バージョン1.0では、HTTPメソッドをプロパティrequestContext.httpMethodとして提供しています。
1.)新しいペイロード形式バージョンのタイプを記述し、パッケージ "@ types/aws-lambda"のPRを介してDefinitelyTypedに送信するか、2)バージョン1.0を使用するようにAPI Gatewayを設定します。
正直なところ、ペイロードバージョン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