本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 Lambda 函數之後,您可以將 Lambda 函數設定為 的授權方API。然後,您可以設定方法來叫用 Lambda 授權方,以判斷呼叫者是否可以叫用您的方法。您可以在與您建立 的相同 帳戶或不同 帳戶中建立 Lambda 函數API。
您可以使用 API Gateway 主控台中的內建工具或使用 Postman 來測試 Lambda 授權方。如需如何使用 Postman 測試 Lambda 授權方函數的指示,請參閱 API 使用 API Gateway Lambda 授權方呼叫 。
下列程序說明如何在API閘道RESTAPI主控台中建立 Lambda 授權方。若要進一步了解不同類型的 Lambda 授權方,請參閱 選擇 Lambda 授權方的類型。
- REQUEST authorizer
-
設定 REQUEST
Lambda 授權方
-
在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。
-
選取 API,然後選擇授權方 。
-
選擇建立授權方。
-
針對授權方名稱,輸入授權方的名稱。
-
針對授權方類型,選取 Lambda。
-
針對 Lambda 函數 ,選取您建立 Lambda 授權方函數 AWS 區域 的 ,然後輸入函數名稱。
-
Lambda 調用角色保持空白,讓API閘道RESTAPI主控台設定資源型政策。政策會授予 API Gateway 調用 Lambda 授權方函數的許可。您也可以選擇輸入IAM角色的名稱,以允許 API Gateway 叫用 Lambda 授權方函數。如需範例角色,請參閱 建立可擔任的 IAM 角色。
-
針對 Lambda 事件承載,選取請求。
-
針對身分來源類型,選取參數類型。支援的參數類型為 Header
、Query string
、Stage
variable
與 Context
。若要新增更多身分來源,請選擇新增參數。
-
若要快取授權方產生的授權政策,請將授權快取保持開啟狀態。啟用政策快取時,您可以修改 TTL值。將 TTL設為零會停用政策快取。
如果您啟用快取,您的授權方必須傳回適用於跨 所有方法的政策API。若要強制執行方法特定的政策,請使用內容變數 $context.path
和 $context.httpMethod
。
-
選擇建立授權方。
- TOKEN authorizer
設定 TOKEN
Lambda 授權方
-
在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。
-
選取 API,然後選擇授權方 。
-
選擇建立授權方。
-
針對授權方名稱,輸入授權方的名稱。
-
針對授權方類型,選取 Lambda。
-
針對 Lambda 函數 ,選取您建立 Lambda 授權方函數 AWS 區域 的 ,然後輸入函數名稱。
-
Lambda 調用角色保持空白,讓API閘道RESTAPI主控台設定資源型政策。政策會授予 API Gateway 調用 Lambda 授權方函數的許可。您也可以選擇輸入IAM角色的名稱,以允許 API Gateway 叫用 Lambda 授權方函數。如需範例角色,請參閱 建立可擔任的 IAM 角色。
-
針對 Lambda 事件承載,選取權杖。
-
針對權杖來源,輸入包含授權權杖的標頭名稱。呼叫者必須包含此名稱的標頭,才能將授權權杖傳送給 Lambda 授權方。
-
(選用) 針對權杖驗證 ,輸入 RegEx 陳述式。API Gateway 會針對此表達式執行輸入權杖的初始驗證,並在驗證成功後叫用授權方。
-
若要快取授權方產生的授權政策,請將授權快取保持開啟狀態。啟用政策快取時,權杖來源中指定的標頭名稱會成為快取金鑰。啟用政策快取時,您可以修改 TTL值。將 TTL設為零會停用政策快取。
如果您啟用快取,您的授權方必須傳回適用於跨 所有方法的政策API。若要強制執行方法特定的政策,您可以關閉授權快取 。
-
選擇建立授權方。
建立 Lambda 授權方之後,您可以進行測試。下列程序說明如何測試 Lambda 授權方。
- REQUEST authorizer
-
- TOKEN authorizer
-
下列 create-authorizer 命令會顯示 ,以使用 建立 Lambda 授權方 AWS CLI。
- REQUEST authorizer
-
下列範例會建立REQUEST
授權方,並使用Authorizer
標頭和accountId
內容變數做為身分來源:
aws apigateway create-authorizer \
--rest-api-id 1234123412 \
--name 'First_Request_Custom_Authorizer' \
--type REQUEST \
--authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \
--identity-source 'method.request.header.Authorization,context.accountId' \
--authorizer-result-ttl-in-seconds 300
- TOKEN authorizer
-
下列範例會建立TOKEN
授權方,並使用 Authorization
標頭做為身分來源:
aws apigateway create-authorizer \
--rest-api-id 1234123412 \
--name 'First_Token_Custom_Authorizer' \
--type TOKEN \
--authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \
--identity-source 'method.request.header.Authorization' \
--authorizer-result-ttl-in-seconds 300
建立 Lambda 授權方之後,您可以進行測試。下列test-invoke-authorizer命令顯示如何測試 Lambda 授權方:
aws apigateway test-invoke-authorizer --rest-api-id 1234123412 \
--authorizer-id efg1234 \
--headers Authorization='Value'
設定 Lambda 授權方之後,您必須將其連接至 的方法API。
設定使用 Lambda 授權方API的方法
-
在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。
-
選取 API。
-
選擇 資源 ,然後選擇新方法或選擇現有方法。
-
在方法請求索引標籤的方法請求設定下,選擇編輯。
-
針對授權方,從下拉式選單選取您剛才建立的 Lambda 授權方。
-
(選用) 如果您要將授權權杖傳遞至後端,請選擇HTTP請求標頭 。選擇新增標頭,然後新增授權標頭的名稱。對於名稱 ,輸入與您為 建立 Lambda 授權方時指定的權杖來源名稱相符的標頭名稱API。此步驟不適用於 REQUEST
授權方。
-
選擇 Save (儲存)。
-
選擇部署API將 部署API到階段。針對使用階段變數的 REQUEST
授權方,您還必須定義必要的階段變數,並在階段編輯器頁面上指定這些變數的值。
設定 Lambda 授權方之後,您必須將其連接至 的方法API。您可以建立新的方法,或使用修補操作將授權方連接至現有方法。
下列 put-method 命令說明如何建立使用 Lambda 授權方的新方法:
aws apigateway put-method --rest-api-id 1234123412 \
--resource-id a1b2c3 \
--http-method PUT \
--authorization-type CUSTOM \
--authorizer-id efg1234
下列 update-method 命令顯示如何更新現有方法以使用 Lambda 授權方:
aws apigateway update-method \
--rest-api-id 1234123412 \
--resource-id a1b2c3 \
--http-method PUT \
--patch-operations op="replace",path="/authorizationType",value="CUSTOM" op="replace",path="/authorizerId",value="efg1234"