本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 Lambda 函數之後,您可以將 Lambda 函數設定為您的API. 然後,您將方法設定為叫用 Lambda 授權器,以判斷呼叫者是否可以叫用您的方法。您可以在建立. 的相同帳戶或不同帳戶中建立 Lambda 函數API。
您可以使用API閘道主控台中的內建工具或使用郵差來測試 Lambda 授權者。如需如何使用郵遞員測試 Lambda 授權者函數的指示,請參閱API與API閘道 Lambda 授權者聯絡。
下列程序說明如何在API閘道RESTAPI主控台中建立 Lambda 授權者。若要進一步了解不同類型的 Lambda 授權者,請參閱選擇一種 Lambda 授權者類型。
- REQUEST authorizer
-
若要設定 REQUEST
Lambda 授權者
-
請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。
-
選取API,然後選擇 [授權者]。
-
選擇建立授權方。
-
針對授權方名稱,輸入授權方的名稱。
-
針對授權方類型,選取 Lambda。
-
對於 Lambda 函數,請選取 AWS 區域 您建立 Lambda 授權者函數的位置,然後輸入函數名稱。
-
將 Lambda 叫用角色保持空白,讓API閘道RESTAPI主控台設定以資源為基礎的政策。此原則會授與API閘道權限以叫用 Lambda 授權者函數。您也可以選擇輸入IAM角色的名稱,以允許API閘道呼叫 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 函數,請選取 AWS 區域 您建立 Lambda 授權者函數的位置,然後輸入函數名稱。
-
將 Lambda 叫用角色保持空白,讓API閘道RESTAPI主控台設定以資源為基礎的政策。此原則會授與API閘道權限以叫用 Lambda 授權者函數。您也可以選擇輸入IAM角色的名稱,以允許API閘道呼叫 Lambda 授權者函數。如需角色範例,請參閱建立可擔任的 IAM 角色。
-
針對 Lambda 事件承載,選取權杖。
-
針對權杖來源,輸入包含授權權杖的標頭名稱。呼叫者必須包含此名稱的標頭,才能將授權權杖傳送給 Lambda 授權者。
-
(選擇性) 對於權杖驗證,請輸入 RegEx 陳述式。APIGateway 針對此表達式執行輸入令牌的初始驗證,並在成功驗證後調用授權者。
-
若要快取授權方產生的授權政策,請將授權快取保持開啟狀態。啟用政策快取時,權杖來源中指定的標頭名稱會成為快取金鑰。啟用原則快取時,您可以修改TTL值。將設定TTL為零會停用原則快取。
如果啟用快取,您的授權者必須傳回適用於所有方法的原則。API若要強制執行特定方法的原則,您可以關閉授權快取。
-
選擇建立授權方。
建立 Lambda 授權者之後,您就可以對其進行測試。下列程序說明如何測試 Lambda 授權者。
- REQUEST authorizer
-
- TOKEN authorizer
-
下列建立授權者命令顯示如何使用. 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的.
若要設定使API用 Lambda 授權器的方法
-
請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。
-
選取一個API。
-
選擇 [資源],然後選擇新方法或選擇現有方法。
-
在方法請求索引標籤的方法請求設定下,選擇編輯。
-
針對授權方,從下拉式選單選取您剛才建立的 Lambda 授權方。
-
(可選)如果要將授權令牌傳遞給後端,HTTP請選擇請求標頭。選擇新增標頭,然後新增授權標頭的名稱。在「名稱」中,輸入與您在建立的 Lambda 授權器時指定的權杖來源名稱相符的標頭名稱。API此步驟不適用於 REQUEST
授權方。
-
選擇儲存。
-
選擇部署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
以下更新方法命令顯示如何更新現有方法以使用 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"