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

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

建立和管理 Lambda 函數 URLs

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

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

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

函數已啟用URLs雙堆疊,支援 IPv4和 IPv6。URL 為函數設定函數後,您可以透過 Web 瀏覽器、curl、Postman 或任何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

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

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

  • (必要) TargetFunctionArn – Lambda 函數的名稱或 Amazon Resource Name (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-原始

AllowOrigins

* (允許所有來源)

https://www.example.com

http://localhost:60905

Access-Control-Allow- 方法

AllowMethods

GET, POST, DELETE, *

Access-Control-Allow-標頭

AllowHeaders

Date, Keep-Alive, X-Custom-Header

Access-Control-Expose-標頭

ExposeHeaders

Date, Keep-Alive, X-Custom-Header

Access-Control-Allow-憑證

AllowCredentials

TRUE

Access-Control-Max-年齡

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

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

您可以設定預留並行,URL透過函數限制 Lambda 函數處理的請求速率。預留並行可限制函數的並行呼叫次數上限。函數每秒請求率上限 (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可能會對應到新函數,而不是刪除。