サーバーレスフレームワークを使用してラムダ関数をデプロイします。サーバーレスはAPIGatewayを使用してエンドポイントを作成します。 GETなどのメソッドでパラメーターを渡し、イベントオブジェクトを使用してラムダで使用できることを知っています。フロントエンドはすでにデプロイされており、エンドポイントを呼び出すために次のURLを使用していました。
example.com/api/EG43
`exports.myHandler = async function(event, context) {
...
// somehow access the URL which was used by the frontend
// to grab that EG43 and then return the result based on that key.
// return information to the caller.
}
どのEG43が、前のバックエンドがそのキーに基づいて結果を返していたキーです。私の質問は、どういうわけかURLが何であるかを知ることが可能であるかどうかです。次のAWSのドキュメントは、ハンドラー引数を使用して読み取ることができるパラメーターを示していますが、URLがありません。
https://docs.aws.Amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html
これらの詳細には、次の2つの方法でアクセスできるはずです。
a。マッピングテンプレートを設定し、ペイロードの一部として必要な詳細を渡します。マッピングテンプレートは、特定の変数にアクセスできる速度テンプレートです。 これを参照してください アクセスできるものの詳細。
b。ラムダはプロキシ統合モードでセットアップできます。これにより、生のリクエストにアクセスできます。 詳細はこちらをご覧ください 。
プロキシ統合モードでLambdaを設定する方法は次のとおりです。
そして、Lambdaがプロキシ統合の方法でセットアップされている場合、イベントで得られるものは次のとおりです。
{
"resource": "/abc/version/test",
"path": "/abc/version/test",
"httpMethod": "GET",
"headers": null,
"queryStringParameters": null,
"pathParameters": null,
"stageVariables": null,
"requestContext": {
"path": "/abc/version/test",
"accountId": "1234",
"resourceId": "resourceId",
"stage": "Stage",
"requestId": "AWS Request ID",
"identity": {
"cognitoIdentityPoolId": null,
"cognitoIdentityId": null,
"apiKey": "API Key",
"cognitoAuthenticationType": null,
"userArn": "arn:aws:iam::<acc_Id>:user/yogesh",
"apiKeyId": "api-key-id",
"userAgent": "aws-internal/3",
"accountId": "<AccId>",
"caller": "<Some caller ID>",
"sourceIp": "test-invoke-source-ip",
"accessKey": "<Access Key>",
"cognitoAuthenticationProvider": null,
"user": "<Some User Id>"
},
"resourcePath": "/abc/version/test",
"httpMethod": "GET",
"extendedRequestId": "test-invoke-extendedRequestId",
"apiId": "API ID, is typically the API GW ID"
},
"body": null,
"isBase64Encoded": false
}