API Gateway Lambda オーソライザーへの入力
次のセクションでは、API Gateway から Lambda オーソライザーへの入力の形式について説明します。
TOKEN
の入力形式
TOKEN
タイプの Lambda オーソライザー (以前のカスタムオーソライザー) の場合は、API のオーソライザーを設定する際、[トークンのソース] としてカスタムヘッダーを指定する必要があります。API クライアントは、受信リクエストでそのヘッダーに必要な認可トークンを渡す必要があります。API Gateway は、受信メソッドリクエストを受け取った時点で、カスタムヘッダーからトークンを抽出します。その後、authorizationToken
プロパティとしてメソッド ARN を渡すだけでなく、Lambda 関数の event
オブジェクトの 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 であり、Lambda オーソライザーの設定に従って API Gateway により自動入力されます。
REQUEST
の入力形式
REQUEST
タイプの Lambda オーソライザーの場合、API Gateway は、event
オブジェクトの一部として、オーソライザーの Lambda 関数にリクエストパラメータを渡します。このリクエストパラメータには、ヘッダー、パスパラメータ、クエリ文字列パラメータ、ステージ変数、一部のリクエストコンテキスト変数などがあります。API 発信者は、パスパラメータ、ヘッダー、クエリ文字列パラメータを設定できます。API デベロッパーは API デプロイ時にステージ変数を設定する必要があります。API Gateway ランタイムに、このリクエストコンテキストが指定されます。
注記
パスパラメータは、リクエストパラメータとして Lambda オーソライザー関数に渡すことができますが、ID ソースとして使用することはできません。
次の例では、API メソッド (REQUEST
) をプロキシ統合に設定する GET
/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 関数の入力形式」を参照してください。