建立和管理 Lambda 函數 URLs - AWS Lambda

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

建立和管理 Lambda 函數 URLs

函數URL是 Lambda 函數的專用 HTTP (S) 端點。您可以透URL過 Lambda 主控台或 Lambda 建立和設定函數API。當您建立函數時URL,Lambda 會自動為您產生唯一的URL端點。一旦你創建一個函數URL,它的URL端點永遠不會改變。函數URL端點具有以下格式:

https://<url-id>.lambda-url.<region>.on.aws
注意

下列地區不支援函數URLs:亞太區域 (海德拉巴) (ap-south-2)、亞太區域 (墨爾本) (ap-southeast-4)、加拿大西部 (卡加利ca-west-1) ()、歐洲 (西班牙eu-south-2) ()、歐洲 (蘇黎世eu-central-2) ()、以色列 (特拉維夫il-central-1) () 和中東 (UAE) (me-central-1)。

功能URLs是雙堆棧啟用,支持IPv4和IPv6。URL為函數配置函數後,您可以通過 Web 瀏覽器,curl,郵差或任何HTTP客戶端通過其HTTP(S)端點調用函數。

注意

您只能URL透過公共互聯網使用您的功能。雖然 Lambda 函數確實支援 AWS PrivateLink,但函數則URLs不支援。

Lambda 函數URLs使用以資源為基礎的政策來實現安全性和存取 功能URLs還支持跨源資源共享(CORS)配置選項。

您可以URLs將函數應用於任何函數別名或$LATEST未發布的函數版本。您無法將函數添加URL到任何其他函數版本。

以下部分說明如何URL使用 Lambda 主控台和 AWS CloudFormation 範本建立和管理函數 AWS CLI

創建一個函數URL(控制台)

請依照下列步驟URL使用主控台建立函數。

  1. 開啟 Lambda 主控台中的函數頁面

  2. 選擇您要URL為其建立函數的函數名稱。

  3. 選擇 [組] 索引標籤,然後選擇 [函數] URL。

  4. 選擇 Create function (建立函數)URL

  5. 對於驗證類型,請選擇 AWS_ IAMNONE。如需函數URL驗證的詳細資訊,請參閱存取控制

  6. (選擇性) 選取 [設定跨來源資源共用 (CORS)],然後CORS設定函數URL的設定。如需有關的更多資訊CORS,請參閱跨源資源共享()CORS

  7. 選擇 Save (儲存)。

這將為您的函數URL的$LATEST未發布版本創建一個函數。該功能URL出現在控制台的功能概述部分中。

  1. 開啟 Lambda 主控台中的函數頁面

  2. 選擇具有您要URL為其建立函數之別名的函數名稱。

  3. 選擇「名」頁標,然後選擇要URL為其建立函數的別名名稱。

  4. 選擇 [組] 索引標籤,然後選擇 [函數] URL。

  5. 選擇 Create function (建立函數)URL

  6. 對於驗證類型,請選擇 AWS_ IAMNONE。如需函數URL驗證的詳細資訊,請參閱存取控制

  7. (選擇性) 選取 [設定跨來源資源共用 (CORS)],然後CORS設定函數URL的設定。如需有關的更多資訊CORS,請參閱跨源資源共享()CORS

  8. 選擇 Save (儲存)。

這會為您的函數URL別名創建一個函數。該函數URL出現在控制台的功能概述部分為您的別名。

使用函數URL(控制台)創建新函數
  1. 開啟 Lambda 主控台中的 函數頁面

  2. 選擇 建立函數

  3. 基本資訊下,請執行下列動作:

    1. Function name (函數名稱) 輸入您函數的名稱,例如 my-function

    2. Runtime (執行階段) 選擇您偏好的語言執行階段,例如 Node.js 18.x

    3. Architecture (架構) 選擇 x86_64arm64

    4. 展開 Permissions (許可),接著選擇建立新的執行角色或使用現有角色。

  4. 展開 [進階設定],然後選取 [功能] URL。

  5. 對於驗證類型,請選擇 AWS_ IAMNONE。如需函數URL驗證的詳細資訊,請參閱存取控制

  6. (選擇性) 選取設定跨來源資源共用 (CORS)。通過在函數創建期間選擇此選項,默認情況下,您的函數URL允許來自所有來源的請求。您可以URL在建立函數後編輯函數的CORS設定。如需有關的更多資訊CORS,請參閱跨源資源共享()CORS

  7. 選擇建立函數

這將URL為函數的$LATEST未發布版本創建一個帶有函數的新函數。該功能URL出現在控制台的功能概述部分中。

創建一個函數URL(AWS CLI)

若要使用 AWS Command Line Interface (AWS CLI) URL 為現有 Lambda 函數建立函數,請執行下列命令:

aws lambda create-function-url-config \ --function-name my-function \ --qualifier prod \ // optional --auth-type AWS_IAM --cors-config {AllowOrigins="https://example.com"} // optional

這會將函數新增URL至函數的prod限定詞my-function。如需有關這些組態參數的詳細資訊,請參閱API參照CreateFunctionUrlConfig中的〈〉。

注意

若要URL透過建立函數 AWS CLI,函數必須已經存在。

將函數添加URL到 CloudFormation 模板

若要將資AWS::Lambda::Url源新增至 AWS CloudFormation 範本,請使用下列語法:

JSON

{ "Type" : "AWS::Lambda::Url", "Properties" : { "AuthType" : String, "Cors" : Cors, "Qualifier" : String, "TargetFunctionArn" : String } }

YAML

Type: AWS::Lambda::Url Properties: AuthType: String Cors: Cors Qualifier: String TargetFunctionArn: String

參數

  • (必要) AuthType — 定義函數的驗證類型URL。可能的值為 AWS_IAMNONE。如果您希望只讓完成身分驗證的使用者存取,請設為 AWS_IAM。若要略過IAM驗證並允許任何使用者對您的功能發出要求,請將設定為NONE

  • (選擇性) CorsCORS定義函數的設定URL。若要新增Cors至中的AWS::Lambda::Url資源 CloudFormation,請使用下列語法。

    範例 AWS:: Lambda:: 烏爾科爾斯()JSON
    { "AllowCredentials" : Boolean, "AllowHeaders" : [ String, ... ], "AllowMethods" : [ String, ... ], "AllowOrigins" : [ String, ... ], "ExposeHeaders" : [ String, ... ], "MaxAge" : Integer }
    範例 AWS:: Lambda:: 烏爾科爾斯()YAML
    AllowCredentials: Boolean AllowHeaders: - String AllowMethods: - String AllowOrigins: - String ExposeHeaders: - String MaxAge: Integer
  • (選用) Qualifier – 別名名稱。

  • (必要) TargetFunctionArn — Lambda 函數的名稱或 Amazon 資源名稱 (ARN)。有效名稱的格式包括:

    • 函數名稱my-function

    • 功能 ARNarn:aws:lambda:us-west-2:123456789012:function:my-function

    • 部分 ARN123456789012:function:my-function

跨源資源共享()CORS

要定義不同來源如何訪問您的函數URL,請使用跨源資源共享(CORS)。CORS如果您打算URL從其他域調用函數,我們建議您進行配置。Lambda 支持函數以下CORS頭文件URLs。

CORS頭 CORS組態屬性 範例值

Access-Control-Allow-Origin

AllowOrigins

* (允許所有來源)

https://www.example.com

http://localhost:60905

Access-Control-Allow-Methods

AllowMethods

GET, POST, DELETE, *

Access-Control-Allow-Headers

AllowHeaders

Date, Keep-Alive, X-Custom-Header

Access-Control-Expose-Headers

ExposeHeaders

Date, Keep-Alive, X-Custom-Header

Access-Control-Allow-Credentials

AllowCredentials

TRUE

Access-Control-Max-Age

MaxAge

5 (預設)、300

當您URL使用 Lambda 主控台或設定CORS函數時 AWS CLI,Lambda 會自動透過函數將CORS標頭新增至所有回應URL。或者,您可以手動將CORS標題添加到函數響應中。如果有衝突的標頭,預期的行為取決於請求的類型:

  • 對於諸如請求之類的預檢OPTIONS請求,函數上配置的CORS標頭優URL先。Lambda 在響應中只返回這些CORS頭文件。

  • 對於非預檢請求 (例如GET或POST請求),Lambda 會傳回函數上已設定的CORS標頭URL,以及函數傳回的CORS標頭。這可能會導致回應中出現重複的CORS標頭。您可能會看到類似下列內容的錯誤:The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed

一般而言,我們建議您在函數上CORS設定所有設定URL,而不是在函數回應中手動傳送CORS標頭。

節流功能 URLs

調節作業會限制函數處理請求的速度。這在許多情況下都相當實用,例如防止函數多載下游資源,或處理突然激增的請求數。

您可以設定保留並行,藉此限制 Lambda 函數透URL過函數處理的請求速率。預留並行可限制函數的並行呼叫次數上限。函數的每秒最大請求率 (RPS) 相當於配置的保留並行的 10 倍。例如,如果您將函數設定為 100 的保留並行,則最大值RPS為 1,000。

每當你的函數並發超過保留的並發,你的函數URL返回一個HTTP429狀態碼。如果您的函數根據設定的保留並行收到超過 10 倍上RPS限的要求,您也會收到錯誤HTTP429訊息。如需預留並行的詳細資訊,請參閱「為函數配置保留並發」。

停用功能 URLs

在緊急情況下,您可能想要拒絕所有流量到您的功能URL。若要停用您的功能URL,請將保留並行設定為零。這將節流對您函數的所有請求URL,從而導致HTTP429狀態響應。若要重新啟用函數URL,請刪除保留的並行設定,或將組態設定為大於零的數量。

刪除功能 URLs

刪除功能時URL,無法復原該功能。創建一個新的函數URL將導致不同的URL地址。

注意

如果您刪除URL具有驗證類型的函數NONE,Lambda 不會自動刪除關聯的資源型政策。如果您想要刪除此政策,則必須手動執行。

  1. 開啟 Lambda 主控台中的函數頁面

  2. 選擇函數的名稱。

  3. 選擇 [組] 索引標籤,然後選擇 [函數] URL。

  4. 選擇 刪除

  5. delete 一詞輸入欄位以確認刪除。

  6. 選擇 刪除

注意

當您刪除具有函數的函數時URL,Lambda 會以非同步方式刪除該函數URL。如果您立即在同一帳戶中創建具有相同名稱的新函數,則原始函數可能URL會映射到新函數而不是刪除。