

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

# 輸入至 API Gateway Lambda 授權方
<a name="api-gateway-lambda-authorizer-input"></a>

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

## `TOKEN` 輸入格式
<a name="w2aac15b9c23c25c19b5"></a>

 針對 `TOKEN` 類型的 Lambda 授權方 (先前稱作自訂授權方)，您必須在設定 API 的授權方時，將自訂標頭指定為**字符來源**。API 用戶端必須在傳入請求中以該標頭傳遞必要的授權符記。收到傳入方法請求時，API Gateway 會從自訂標頭中擷取字符。然後，它會傳遞字符作為 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` 輸入格式
<a name="w2aac15b9c23c25c19b7"></a>

針對 `REQUEST` 類型的 Lambda 授權方，API Gateway 會將請求參數傳遞到授權方 Lambda 函數，做為 `event` 物件的一部分。請求參數包括標頭、路徑參數、查詢字串參數、階段變數與一些請求上下文變數。API 發起人可以設定路徑參數、標頭與查詢字串參數。API 開發人員必須在 API 部署期間設定階段變數，而 API Gateway 則會在執行時間提供請求內容。

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

 下列範例顯示具有代理整合之 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` 是鍵值對的對應，並對應到 [\$1context](api-gateway-mapping-template-reference.md#context-variable-reference) 變數。它的結果是與 API 相關。

 API Gateway 可能會將新的金鑰加入至地圖。如需 Lambda 代理整合中 Lambda 函數輸入的詳細資訊，請參閱[代理整合之 Lambda 函數的輸入格式](set-up-lambda-proxy-integrations.md#api-gateway-simple-proxy-for-lambda-input-format)。