API Gateway Lambda 授權方的輸入 - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

API Gateway Lambda 授權方的輸入

下一節說明從 API Gateway 到 Lambda 授權方的輸入格式。

TOKEN 輸入格式

對於 TOKEN類型的 Lambda 授權方 (先前稱為自訂授權方),您必須在為 設定授權方時指定自訂標頭做為權杖來源API。API 用戶端必須傳遞傳入請求中該標頭中所需的授權權杖。收到傳入的方法請求時,APIGateway 會從自訂標頭擷取權杖。然後,它會傳遞權杖作為 Lambda 函數event物件的authorizationToken屬性,以及ARN作為 methodArn 屬性的方法:

{ "type":"TOKEN", "authorizationToken":"{caller-supplied-token}",     "methodArn":"arn:aws:execute-api:{regionId}:{accountId}:{apiId}/{stage}/{httpVerb}/[{resource}/[{child-resources}]]" }

在此範例中,type 屬性會指定 TOKEN 授權方做為授權方類型。{caller-supplied-token} 源自用戶端要求的授權標頭,可以是任何字串值。methodArn 是傳入方法請求ARN的 ,由 API Gateway 根據 Lambda 授權方組態填入。

REQUEST 輸入格式

對於 REQUEST類型的 Lambda 授權方,APIGateway 會將請求參數傳遞給授權方 Lambda 函數,作為event物件的一部分。請求參數包括標頭、路徑參數、查詢字串參數、階段變數與一些請求上下文變數。API 呼叫者可以設定路徑參數、標頭和查詢字串參數。API 開發人員必須在API部署期間設定階段變數,APIGateway 會在執行時間提供請求內容。

注意

路徑參數可作為請求參數傳遞到 Lambda 授權方函數,但無法作為身分來源使用。

下列範例顯示具有代理整合API的方法 (GET /request) 對REQUEST授權方的輸入:

{ "type": "REQUEST", "methodArn": "arn:aws:execute-api:us-east-1:123456789012:abcdef123/test/GET/request", "resource": "/request", "path": "/request", "httpMethod": "GET", "headers": { "X-AMZ-Date": "20170718T062915Z", "Accept": "*/*", "HeaderAuth1": "headerValue1", "CloudFront-Viewer-Country": "US", "CloudFront-Forwarded-Proto": "https", "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Is-Mobile-Viewer": "false", "User-Agent": "..." }, "queryStringParameters": { "QueryString1": "queryValue1" }, "pathParameters": {}, "stageVariables": { "StageVar1": "stageValue1" }, "requestContext": { "path": "/request", "accountId": "123456789012", "resourceId": "05c7jb", "stage": "test", "requestId": "...", "identity": { "apiKey": "...", "sourceIp": "...", "clientCert": { "clientCertPem": "CERT_CONTENT", "subjectDN": "www.example.com", "issuerDN": "Example issuer", "serialNumber": "a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1", "validity": { "notBefore": "May 28 12:30:02 2019 GMT", "notAfter": "Aug 5 09:36:04 2021 GMT" } } }, "resourcePath": "/request", "httpMethod": "GET", "apiId": "abcdef123" } }

requestContext 是鍵值對的對應,並對應到 $context 變數。其結果取決於 API。

API Gateway 可能會將新金鑰新增至地圖。如需 Lambda 代理整合中 Lambda 函數輸入的詳細資訊,請參閱代理整合之 Lambda 函數的輸入格式