~~NOCACHE~~ ## Lambdaプロキシ統合の使用 以前から気になっていたが、APIGatewayをトリガーにLambda関数を動かしているのにeventが取得できなく・・・調べたところ リクエストのマッピングテンプレートを使わない場合、[Lambdaプロキシ統合の使用]にチェックしないとeventが空になってしまうんですね。 ### 実験 ・APIGatewayはエンドポイントをリージョンとしたシンプルなもの[[Aws:APIGateway:CallingLambdafunction|APIGateway/Lambda関数の呼び出し]]辺りを参考に作成 ・Lambda関数は下記のコードで、APIGatewayからのeventをそのままブラウザに表示しています。 import json def lambda_handler(event, context): jsn_str = json.dumps(event, ensure_ascii=False, indent=2) return { 'isBase64Encoded': False, 'statusCode': 200, 'headers': {}, 'body': jsn_str } #### Lambdaプロキシ統合の使用:チェック無し ※Lambda関数選択時に、[Lambdaプロキシ統合の使用]をチェックしません。 ブラウザへのレスポンス {"isBase64Encoded": false, "statusCode": 200, "headers": {}, "body": "{}"} #### Lambdaプロキシ統合の使用:チェックあり ※Lambda関数選択時に、[Lambdaプロキシ統合の使用]をチェックします。 [[Aws:APIGateway:UsingLambdaProxy#Lambdaプロキシ統合の使用チェックありのレスポンス|ブラウザへのレスポンスは長いので末尾に]] #### クエリパラメータを追加してみる。 %%[https://XXXXX.execute-api.ap-northeast-1.amazonaws.com/test]%%の末尾に[?id=0001&value=tokyo]をつけてリクエストしてみる。 [queryStringParameters]と[multiValueQueryStringParameters]が追加されていました。 "queryStringParameters": { "id": "0001", "value": "tokyo" }, "multiValueQueryStringParameters": { "id": [ "0001" ], "value": [ "tokyo" ] } #### ついでにDynamoDBに書き込んでみる [[Aws:Lambda:WriteApiGwQueryParametersToDyanmoDB|Aws/Lambda/APIGWのクエリパラメータをDyanmoDBに書き込む]] ### Lambdaプロキシ統合の使用:チェックありのレスポンス { "resource": "/", "path": "/", "httpMethod": "GET", "headers": { "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "accept-encoding": "gzip, deflate, br", "accept-language": "ja", "cache-control": "max-age=0", "Host": "{APIGWのID}.execute-api.ap-northeast-1.amazonaws.com", "referer": "https://ap-northeast-1.console.aws.amazon.com/", "sec-ch-ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"90\", \"Google Chrome\";v=\"90\"", "sec-ch-ua-mobile": "?0", "sec-fetch-dest": "document", "sec-fetch-mode": "navigate", "sec-fetch-site": "cross-site", "sec-fetch-user": "?1", "upgrade-insecure-requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", "X-Amzn-Trace-Id": "Root=1-60aa083e-2598a84640ebc8667f9f08ee", "X-Forwarded-For": "{接続元IPアドレス}", "X-Forwarded-Port": "443", "X-Forwarded-Proto": "https" }, "multiValueHeaders": { "accept": [ "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" ], "accept-encoding": [ "gzip, deflate, br" ], "accept-language": [ "ja" ], "cache-control": [ "max-age=0" ], "Host": [ "{APIGWのID}.execute-api.ap-northeast-1.amazonaws.com" ], "referer": [ "https://ap-northeast-1.console.aws.amazon.com/" ], "sec-ch-ua": [ "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"90\", \"Google Chrome\";v=\"90\"" ], "sec-ch-ua-mobile": [ "?0" ], "sec-fetch-dest": [ "document" ], "sec-fetch-mode": [ "navigate" ], "sec-fetch-site": [ "cross-site" ], "sec-fetch-user": [ "?1" ], "upgrade-insecure-requests": [ "1" ], "User-Agent": [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36" ], "X-Amzn-Trace-Id": [ "Root=1-60aa083e-2598a84640ebc8667f9f08ee" ], "X-Forwarded-For": [ "{接続元IPアドレス}" ], "X-Forwarded-Port": [ "443" ], "X-Forwarded-Proto": [ "https" ] }, "queryStringParameters": null, "multiValueQueryStringParameters": null, "pathParameters": null, "stageVariables": null, "requestContext": { "resourceId": "sk5324ywjb", "resourcePath": "/", "httpMethod": "GET", "extendedRequestId": "fxY5tHljtjMFq3w=", "requestTime": "23/May/2021:07:46:06 +0000", "path": "/test", "accountId": "{アカウントID}", "protocol": "HTTP/1.1", "stage": "test", "domainPrefix": "{APIGWのID}", "requestTimeEpoch": 1621755966012, "requestId": "e00c2936-dca1-4084-a574-a7c8b7fb4b21", "identity": { "cognitoIdentityPoolId": null, "accountId": null, "cognitoIdentityId": null, "caller": null, "sourceIp": "{接続元IPアドレス}", "principalOrgId": null, "accessKey": null, "cognitoAuthenticationType": null, "cognitoAuthenticationProvider": null, "userArn": null, "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", "user": null }, "domainName": "{APIGWのID}.execute-api.ap-northeast-1.amazonaws.com", "apiId": "{APIGWのID}" }, "body": null, "isBase64Encoded": false } {{tag>AWS APIGateway Lambda なるほど}}