本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
函數 URL 是 Lambda 函數專用的 HTTP(S) 端點。您可以透過 Lambda 主控台或 Lambda API 建立及設定函數 URL。
提示
Lambda 提供兩種透過 HTTP 端點叫用函數的方式:函數 URLs和 Amazon API Gateway。如果您不確定哪種是最適合使用案例的方法,請參閱 選取一種使用 HTTP 請求調用 Lambda 函數的方法。
當您建立函數 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
) 和中東 (阿拉伯聯合大公國) ()me-central-1
)。
函數 URL 可支援雙堆疊,能同時支援 IPv4 和 IPv6。為函數設定函數 URL 後,您可以利用 Web 瀏覽器、curl、Postman 或任何 HTTP 用戶端,透過 HTTP(S) 端點呼叫函數。
注意
您只能透過公有網際網路存取您的函數 URL。雖然 Lambda 函數確實支援 AWS PrivateLink,但函數 URL 不支援。
Lambda 函數 URL 使用以資源為基礎的政策,妥善控管安全性和存取權。函數 URL 也支援跨來源資源共用 (CORS) 組態選項。
您可以將函數 URL 套用至任何函數別名或未發佈的$LATEST
函數版本。函數 URL 無法新增至其他任何函數版本。
下一節說明如何使用 Lambda 主控台和 AWS CloudFormation 範本建立 AWS CLI和管理函數 URL
主題
建立函數 URL (主控台)
請遵循下列步驟,使用主控台建立函數 URL。
-
開啟 Lambda 主控台中的函數頁面
。 -
選擇您要為其建立函數 URL 的函數名稱。
-
選擇 Configuration (組態) 標籤,然後選擇 Function URL (函數 URL)。
-
選擇 Create function URL (建立函數 URL)。
-
為 Auth type (驗證類型) 選擇 AWS_IAM 或 NONE (無)。如需函數 URL 身分驗證的詳細資訊,請參閱存取控制。
-
(選用) 選取 Configure cross-origin resource sharing (CORS) (設定跨來源資源共享 (CORS)),然後完成函數 URL 的 CORS 設定。如需 CORS 的詳細資訊,請參閱「跨來源資源共享 (CORS)」。
-
選擇 Save (儲存)。
這樣即可為 $LATEST
未發佈版本的函數建立函數 URL。函數 URL 會顯示於主控台的 Function overview (函數概觀) 區段。
-
開啟 Lambda 主控台中的函數頁面
。 -
找到您要為其建立函數 URL 的函數別名,選擇其函數名稱。
-
選擇 Aliases (別名) 標籤,接著找到您要為其建立函數 URL 的函數別名,選擇該別名的名稱。
-
選擇 Configuration (組態) 標籤,然後選擇 Function URL (函數 URL)。
-
選擇 Create function URL (建立函數 URL)。
-
為 Auth type (驗證類型) 選擇 AWS_IAM 或 NONE (無)。如需函數 URL 身分驗證的詳細資訊,請參閱存取控制。
-
(選用) 選取 Configure cross-origin resource sharing (CORS) (設定跨來源資源共享 (CORS)),然後完成函數 URL 的 CORS 設定。如需 CORS 的詳細資訊,請參閱「跨來源資源共享 (CORS)」。
-
選擇 Save (儲存)。
這樣即可為函數別名建立函數 URL。函數 URL 會顯示於主控台中別名的 Function overview (函數概觀) 區段。
建立具有函數 URL 的新函數 (主控台)
-
開啟 Lambda 主控台中的 函數頁面
。 -
選擇建立函數。
-
在基本資訊下,請執行下列動作:
-
為 Function name (函數名稱) 輸入您函數的名稱,例如
my-function
。 -
為 Runtime (執行階段) 選擇您偏好的語言執行階段,例如 Node.js 18.x。
-
為 Architecture (架構) 選擇 x86_64 或 arm64。
-
展開 Permissions (許可),接著選擇建立新的執行角色或使用現有角色。
-
-
展開 Advanced settings (進階設定),然後選取 Function URL (函數 URL)。
-
為 Auth type (驗證類型) 選擇 AWS_IAM 或 NONE (無)。如需函數 URL 身分驗證的詳細資訊,請參閱存取控制。
-
(選用) 選取 Configure cross-origin resource sharing (CORS) (設定跨來源資源共享 (CORS))。只要您在建立函數的過程中選取此選項,在預設情形下,您的函數 URL 就能允許所有來源的請求。建立函數後,您可以編輯函數 URL 的 CORS 設定。如需 CORS 的詳細資訊,請參閱「跨來源資源共享 (CORS)」。
-
選擇 Create function (建立函數)。
這樣即可為 $LATEST
未發佈版本的函數建立具有函數 URL 的新函數。函數 URL 會顯示於主控台的 Function overview (函數概觀) 區段。
建立函數 URL (AWS CLI)
若要使用 AWS Command Line Interface (AWS CLI) 為現有的 Lambda 函數建立函數 URL,請執行下列命令:
aws lambda create-function-url-config \ --function-name
my-function
\ --qualifierprod
\ // optional --auth-typeAWS_IAM
--cors-config{AllowOrigins="https://example.com"}
// optional
這會將函數 URL 新增至函數 my-function
的 prod
限定詞。如需這些組態參數的詳細資訊,請參閱 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_IAM
或NONE
。如果您希望只讓完成身分驗證的使用者存取,請設為AWS_IAM
。如要繞過 IAM 身分驗證,並允許任何使用者向您的函數提出請求,請設為NONE
。-
(選用)
Cors
– 定義函數 URL 的 CORS 設定。如要將Cors
新增至 CloudFormation 中的AWS::Lambda::Url
資源,請使用下列語法。範例 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
函數 ARN –
arn:aws:lambda:us-west-2:123456789012:function:my-function
部分 ARN –
123456789012:function:my-function
跨來源資源共享 (CORS)
如要定義不同來源存取您函數 URL 的方式,請使用跨來源資源共享 (CORS)
CORS 標頭 | CORS 組態屬性 | 範例值 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
當您使用 Lambda 主控台或 為函數 URL 設定 CORS 時 AWS CLI,Lambda 會自動透過函數 URL 將 CORS 標頭新增至所有回應。或者,您也可以手動將 CORS 標頭新增至函數回應中。如果有衝突的標頭,預期的行為取決於請求的類型:
-
對於 OPTIONS 請求等預檢請求,函數 URL 上設定的 CORS 標頭優先。Lambda 只會在回應中傳回這些 CORS 標頭。
-
對於 GET 或 POST 請求等非預檢請求,Lambda 會傳回函數 URL 上設定的 CORS 標頭,以及函數傳回的 CORS 標頭。這可能會導致回應中出現重複的 CORS 標頭。您可能會看到類似如下的錯誤:
The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed
。
一般而言,我們建議在函數 URL 上設定所有 CORS 設定,而不是在函數回應中手動傳送 CORS 標頭。
調節函數 URL
調節作業會限制函數處理請求的速度。這在許多情況下都相當實用,例如防止函數多載下游資源,或處理突然激增的請求數。
您可以設定預留並行,調節 Lambda 函數透過函數 URL 處理請求的速度。預留並行可限制函數的並行呼叫次數上限。函數的每秒請求率 (RPS) 上限相當於所設定預留並行數的 10 倍。例如,如果您將函數的預留並行值設為 100,則 RPS 最高為 1,000。
每當函數並行數量超過預留的並行數,函數 URL 就會傳回 HTTP 429
狀態碼。如果函數收到的請求超過所設定預留並行數 10 倍的 RPS 最大值,您也會收到 HTTP 429
錯誤。如需預留並行的詳細資訊,請參閱「設定函數的預留並行」。
停用函數 URL
在緊急情況下,您可能會希望拒絕傳入函數 URL 的所有流量。若要停用函數 URL,請將預留並行設為零。這樣就能調節函數 URL 收到的所有請求,進而使 URL 傳回 HTTP 429
狀態回應。如要重新啟動函數 URL,請刪除預留並行的組態,或將組態設為大於零的數量。
刪除函數 URL
當您刪除函數 URL,您就無法復原。建立新函數 URL 會產生不同的 URL 地址。
注意
如果您刪除具有驗證類型 NONE
的函數 URL,Lambda 不會自動刪除關聯的資源型政策。如果您想要刪除此政策,則必須手動執行。
-
開啟 Lambda 主控台中的函數頁面
。 -
選擇函數的名稱。
-
選擇 Configuration (組態) 標籤,然後選擇 Function URL (函數 URL)。
-
選擇 刪除 。
-
將 delete 一詞輸入欄位以確認刪除。
-
選擇 刪除 。
注意
當您刪除具有函數 URL 的函數時,Lambda 會非同步刪除相應的函數 URL。如果您立即在相同帳戶中建立具有相同名稱的新函數,則原來的函數 URL 可能會映射到新的函數,而不會被刪除。