AWSのAPI Gatewayから、統合しているlambda関数を呼び出す際に、HTTP GETパラメータを渡す方法がわからなかったので調べてみた。
結論:
API GatewayからのGETパラメータをlambda関数から参照する際は、
queryStringParameters
を使う。
例)
https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/stage?foo=bar
のリクエストパラメータをlambdaで利用する場合、lambda関数(node.js)内では
event.queryStringParameters.foo
で参照できる。
ほか、API Gatewayで統合したLambda関数ではevent変数で以下の項目が利用できる模様。
{
"resource": "/",
"path": "/",
"httpMethod": "GET",
"headers": null,
"queryStringParameters": {
"foo": "bar"
},
"pathParameters": null,
"stageVariables": null,
"requestContext": {
"accountId": "xxxxxxxxxxxx",
"resourceId": "xxxxxxxxxxx",
"stage": "test-invoke-stage",
"requestId": "test-invoke-request",
"identity": {
"cognitoIdentityPoolId": null,
"accountId": "xxxxxxxxxxxx",
"cognitoIdentityId": null,
"caller": "xxxxxxxxxxxxxxx",
"apiKey": "test-invoke-api-key",
"sourceIp": "test-invoke-source-ip",
"accessKey": "xxxxxxxxxxxxxxxx",
"cognitoAuthenticationType": null,
"cognitoAuthenticationProvider": null,
"userArn": "arn:aws:iam::xxxxxxx:user/xxxxxxxxx",
"userAgent": "Apache-HttpClient/4.5.x (Java/1.8.0_102)",
"user": "xxxxxxxxxxxxxxxxxx"
},
"resourcePath": "/",
"httpMethod": "GET",
"apiId": "xxxxxxxxx"
},
"body": null,
"isBase64Encoded": false
}