Lambdaでクエリストリングを取得する方法まとめ

Lambda
スポンサーリンク

API Gateway 経由で Lambda を実行した場合の event の内容

API Gateway 経由で Lambda を実行する場合 lambda_handler の引数 event には API Gateway からのリクエスト情報が格納されています。

Lambda Function

import json

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps(event)
    }

curl コマンドでの API 実行とレスポンス

$ curl 'https://myapigatewayendpoint.execute-api.your_region.amazonaws.com/dev?user=test&country=jp' --header 'x-api-key:myapikey'
{"resource": "/", "path": "/", "httpMethod": "GET", "headers": {"accept": "*/*", "Host": "myapigatewayendpoint.execute-api.your_region.amazonaws.com", "User-Agent": "curl/7.77.0", "X-Amzn-Trace-Id": "Root=1-622957fa-5087ab5a4d5c436e3e2390ae", "x-api-key": "myapikey", "X-Forwarded-For": "xxx.xxx.xxx.xxx", "X-Forwarded-Port": "443", "X-Forwarded-Proto": "https"}, "multiValueHeaders": {"accept": ["*/*"], "Host": ["myapigatewayendpoint.execute-api.your_region.amazonaws.com"], "User-Agent": ["curl/7.77.0"], "X-Amzn-Trace-Id": ["Root=1-622957fa-5087ab5a4d5c436e3e2390ae"], "x-api-key": ["myapikey"], "X-Forwarded-For": ["xxx.xxx.xxx.xxx"], "X-Forwarded-Port": ["443"], "X-Forwarded-Proto": ["https"]}, "queryStringParameters": {"country": "jp", "user": "test"}, "multiValueQueryStringParameters": {"country": ["jp"], "user": ["test"]}, "pathParameters": null, "stageVariables": null, "requestContext": {"resourceId": "ptarrfza0b", "resourcePath": "/", "httpMethod": "GET", "extendedRequestId": "OvqvKH3JPHcFvUQ=", "requestTime": "10/Mar/2022:01:44:26 +0000", "path": "/dev", "accountId": "530976830399", "protocol": "HTTP/1.1", "stage": "dev", "domainPrefix": "myapigatewayendpoint", "requestTimeEpoch": 1646876666425, "requestId": "344212c5-b723-4b07-ae8d-df1ad0079ec8", "identity": {"cognitoIdentityPoolId": null, "cognitoIdentityId": null, "apiKey": "myapikey", "principalOrgId": null, "cognitoAuthenticationType": null, "userArn": null, "apiKeyId": "vb227hhxoj", "userAgent": "curl/7.77.0", "accountId": null, "caller": null, "sourceIp": "xxx.xxx.xxx.xxx", "accessKey": null, "cognitoAuthenticationProvider": null, "user": null}, "domainName": "myapigatewayendpoint.execute-api.your_region.amazonaws.com", "apiId": "myapigatewayendpoint"}, "body": null, "isBase64Encoded": false}

Lambda でクエリストリングを取り出す方法

以下のように event から queryStringParameters を取り出せばクエリストリングを取得出来ます。

Lambda Function

import json

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps(event['queryStringParameters'])
    }

curl コマンドでの API 実行とレスポンス

$ curl 'https://myapigatewayendpoint.execute-api.your_region.amazonaws.com/dev?user=test&country=jp' --header 'x-api-key:myapikey'
{"country": "jp", "user": "test"}
タイトルとURLをコピーしました