設定API閘道 Lambda 授權者 - Amazon API 网关

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

設定API閘道 Lambda 授權者

建立 Lambda 函數之後,您可以將 Lambda 函數設定為您的API. 然後,您將方法設定為叫用 Lambda 授權器,以判斷呼叫者是否可以叫用您的方法。您可以在建立. 的相同帳戶或不同帳戶中建立 Lambda 函數API。

您可以使用API閘道主控台中的內建工具或使用郵差來測試 Lambda 授權者。如需如何使用郵遞員測試 Lambda 授權者函數的指示,請參閱API與API閘道 Lambda 授權者聯絡

設定 Lambda 授權者 (主控台)

下列程序說明如何在API閘道RESTAPI主控台中建立 Lambda 授權者。若要進一步了解不同類型的 Lambda 授權者,請參閱選擇一種 Lambda 授權者類型

REQUEST authorizer
若要設定 REQUEST Lambda 授權者
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選取API,然後選擇 [授權者]。

  3. 選擇建立授權方

  4. 針對授權方名稱,輸入授權方的名稱。

  5. 針對授權方類型,選取 Lambda

  6. 對於 Lambda 函數,請選取 AWS 區域 您建立 Lambda 授權者函數的位置,然後輸入函數名稱。

  7. Lambda 叫用角色保持空白,讓API閘道RESTAPI主控台設定以資源為基礎的政策。此原則會授與API閘道權限以叫用 Lambda 授權者函數。您也可以選擇輸入IAM角色的名稱,以允許API閘道呼叫 Lambda 授權者函數。如需角色範例,請參閱建立可擔任的 IAM 角色

  8. 針對 Lambda 事件承載,選取請求

  9. 針對身分來源類型,選取參數類型。支援的參數類型為 HeaderQuery stringStage variableContext。若要新增更多身分來源,請選擇新增參數

  10. 若要快取授權方產生的授權政策,請將授權快取保持開啟狀態。啟用原則快取時,您可以修改TTL值。將設定TTL為零會停用原則快取。

    如果啟用快取,您的授權者必須傳回適用於所有方法的原則。API若要強制執行特定方法的原則,請使用內容變數$context.path和. $context.httpMethod

  11. 選擇建立授權方

TOKEN authorizer
若要設定 TOKEN Lambda 授權者
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選取API,然後選擇 [授權者]。

  3. 選擇建立授權方

  4. 針對授權方名稱,輸入授權方的名稱。

  5. 針對授權方類型,選取 Lambda

  6. 對於 Lambda 函數,請選取 AWS 區域 您建立 Lambda 授權者函數的位置,然後輸入函數名稱。

  7. Lambda 叫用角色保持空白,讓API閘道RESTAPI主控台設定以資源為基礎的政策。此原則會授與API閘道權限以叫用 Lambda 授權者函數。您也可以選擇輸入IAM角色的名稱,以允許API閘道呼叫 Lambda 授權者函數。如需角色範例,請參閱建立可擔任的 IAM 角色

  8. 針對 Lambda 事件承載,選取權杖

  9. 針對權杖來源,輸入包含授權權杖的標頭名稱。呼叫者必須包含此名稱的標頭,才能將授權權杖傳送給 Lambda 授權者。

  10. (選擇性) 對於權杖驗證,請輸入 RegEx 陳述式。APIGateway 針對此表達式執行輸入令牌的初始驗證,並在成功驗證後調用授權者。

  11. 若要快取授權方產生的授權政策,請將授權快取保持開啟狀態。啟用政策快取時,權杖來源中指定的標頭名稱會成為快取金鑰。啟用原則快取時,您可以修改TTL值。將設定TTL為零會停用原則快取。

    如果啟用快取,您的授權者必須傳回適用於所有方法的原則。API若要強制執行特定方法的原則,您可以關閉授權快取。

  12. 選擇建立授權方

建立 Lambda 授權者之後,您就可以對其進行測試。下列程序說明如何測試 Lambda 授權者。

REQUEST authorizer
若要測試 REQUEST Lambda 授權者
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選擇授權者的姓名。

  3. 在「測試授權者」下,輸入身分識別來源的值。

    如果您正在使用範例REQUEST授權者 Lambda 函數,請執行下列操作:

    1. 選取標頭並輸入 headerValue1,然後選擇新增參數

    2. 身分來源類型底下,選取查詢字串並輸入 queryValue1,然後選擇新增參數

    3. 身分來源類型底下,選取階段變數並輸入 stageValue1

    您無法修改測試叫用的內容變數,但可以修改 Lambda 函數的API閘道授權者測試事件範本。然後,您可以使用修改後的內容變數來測試 Lambda 授權者函數。如需詳細資訊,請參閱AWS Lambda 開發人員指南中的主控台中測試 Lambda 函數

  4. 選擇測試授權方

TOKEN authorizer
若要測試 TOKEN Lambda 授權者
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選擇授權者的姓名。

  3. 在「測試授權者」下,輸入權杖的值。

    如果您正在使用範例TOKEN授權者 Lambda 函數,請執行下列操作:

    1. 對於 authorizationToken,請輸入allow

  4. 選擇測試授權方

    如果您的 Lambda 授權者在測試環境中成功拒絕了請求,則測試會以回應回應。200 OK HTTP不過,在測試環境之外,APIGateway 會傳回回403 ForbiddenHTTP應,且方法要求失敗。

設定 Lambda 授權者 ()AWS CLI

下列建立授權者命令顯示如何使用. 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 授權器 (主控台) 的方法

設定 Lambda 授權者之後,您必須將它附加至您API的.

若要設定使API用 Lambda 授權器的方法
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選取一個API。

  3. 選擇 [資源],然後選擇新方法或選擇現有方法。

  4. 方法請求索引標籤的方法請求設定下,選擇編輯

  5. 針對授權方,從下拉式選單選取您剛才建立的 Lambda 授權方。

  6. (可選)如果要將授權令牌傳遞給後端,HTTP請選擇請求標頭。選擇新增標頭,然後新增授權標頭的名稱。在「名稱」中,輸入與您在建立的 Lambda 授權器時指定的權杖來源名稱相符的標頭名稱。API此步驟不適用於 REQUEST 授權方。

  7. 選擇儲存

  8. 選擇署API以部署API到階段。針對使用階段變數的 REQUEST 授權方,您還必須定義必要的階段變數,並在階段編輯器頁面上指定這些變數的值。

設定使用 Lambda 授權器的方法 ()AWS CLI

設定 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"