

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

# 設定跨帳戶 API Gateway Lambda 授權方
<a name="apigateway-lambda-authorizer-cross-account-lambda-authorizer"></a>

您現在可以使用來自不同 AWS 帳戶的 AWS Lambda 函數做為 API 授權方函數。每個帳戶可以位於 Amazon API Gateway 可用的任何區域。Lambda 授權方函數可以使用承載字符身分驗證策略，例如 OAuth 或 SAML。這可讓您輕鬆地集中管理和分享跨多個 API Gateway API 的中央 Lambda 授權方函數。

在本節中，我們將示範如何使用 Amazon API Gateway 主控台設定跨帳戶 Lambda 授權方功能。

這些指示假設您在一個 AWS 帳戶中已有 API Gateway API，而在另一個帳戶中已有 Lambda 授權方函數。

## 使用 API Gateway 主控台設定跨帳戶 Lambda 授權方
<a name="apigateway-cross-account-lambda-auth-configure-cross-account-authorizer"></a>

在您 API 所在的帳戶中，登入 Amazon API Gateway 主控台，然後執行下列操作：

1. 選擇您的 API，然後在主導覽窗格中選擇**授權方**。

1. 選擇**建立授權方**。

1. 針對**授權方名稱**，輸入授權方的名稱。

1. 針對**授權方類型**，選取 **Lambda**。

1. 對於 **Lambda 函數**，輸入您在第二個帳戶中擁有之 Lambda 授權方函數的完整 ARN。
**注意**  
在 Lambda 主控台中，您可以在主控台視窗的右上角找到適用於您函數的 ARN。

1. 此時會出現包含 `aws lambda add-permission` 命令的警告。此政策會授與 API Gateway 許可，以調用授權方 Lambda 函數。複製指令並儲存，以供日後使用。建立授權方之後，您可以執行命令。

1. 針對 **Lambda 事件承載**，選擇**權杖**代表 `TOKEN` 授權方，或選擇**請求**代表 `REQUEST` 授權方。

1. 根據上一個步驟的選擇，執行下列其中一項操作：

   1.  針對**權杖**選項，執行下列操作：
      + 針對**權杖來源**，輸入包含授權權杖的標頭名稱。API 用戶端必須包含此名稱的標頭，才能將授權字符傳送到 Lambda 授權方。
      + 或者，針對**權杖驗證**，輸入 RegEx 陳述式。API Gateway 會對此表達式執行輸入字符的初始驗證，並在成功驗證時調用授權方。這樣做有助於減少對 API 的呼叫。
      + 若要快取授權方產生的授權政策，請將**授權快取**保持開啟狀態。啟用政策快取時，您可以選擇修改 **TTL** 值。將 **TTL** 設定為零會停用政策快取。啟用政策快取時，**權杖來源**中指定的標頭名稱會成為快取金鑰。如果在請求中將多個值傳遞給此標頭，則所有值都將成為快取金鑰，並會保留順序。
**注意**  
預設 **TTL** 值為 300 秒。最大值為 3600 秒，而且無法增加此限制。

   1. 針對 **請求** 選項，執行下列操作：
      + 針對**身分來源類型**，選取參數類型。支援的參數類型為 `Header`、`Query string`、`Stage variable` 與 `Context`。若要新增更多身分來源，請選擇**新增參數**。
      + 若要快取授權方產生的授權政策，請將**授權快取**保持開啟狀態。啟用政策快取時，您可以選擇修改 **TTL** 值。將 **TTL** 設定為零會停用政策快取。

        API Gateway 使用指定的身分來源作為請求授權方快取金鑰。啟用快取時，只有在成功驗證執行時間存在所有指定的身分來源之後，API Gateway 才會呼叫授權方的 Lambda 函數。如果指定的身分來源遺漏、為 null 或是空白，則 API Gateway 會傳回 `401 Unauthorized` 回應，而不會呼叫授權方 Lambda 函式。

        定義多個身分來源時，會使用這些來源衍生授權方的快取金鑰。變更任何快取金鑰部分都會使授權方捨棄快取的政策文件，並產生新的文件。如果在請求中傳遞具有多個值的標頭，則所有值將成為快取金鑰的一部分，並會保留順序。
      + 快取關閉時，不需指定身分來源。
**注意**  
 若要啟用快取，您的授權方必須傳回適用於 API 之所有方法的政策。若要強制執行方法特定政策，您可以關閉**授權快取**。

1. 選擇**建立授權方**。

1. 將您在上一個步驟中複製的`aws lambda add-permission`命令字串貼到為第二個帳戶設定的 AWS CLI 視窗中。將授權方 ID 取代為 `AUTHORIZER_ID` 。這會授與您的第一個帳戶對第二個帳戶的 Lambda 授權方函數的存取權。