選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

控制對 Lambda 函數 URL 的存取

焦點模式
控制對 Lambda 函數 URL 的存取 - AWS Lambda

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

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

您可使用 AuthType 參數和連接至特定函數的資源型政策,控制對 Lambda 函數 URL 的存取權。這兩個元件的組態能決定誰可以對函數 URL 呼叫或執行其他管理動作。

AuthType 參數決定 Lambda 如何對函數 URL 的請求執行身分驗證或授權。設定函數 URL 時,您必須指定以下任一 AuthType 選項:

  • AWS_IAM – Lambda 使用 AWS Identity and Access Management (IAM) 根據 IAM 主體的身分政策和函數的資源型政策來驗證和授權請求。如果您希望只讓完成身分驗證的 使用者和角色透過函數 URL 呼叫您的函數,請選擇此選項。

  • NONE – Lambda 不會在呼叫函數前執行任何身分驗證。然而,函數的資源型政策永遠有效,而且您必須授予公有存取權,您的函數 URL 才能接收請求。選擇此選項,即可允許使用者公開存取函數 URL,而且不必完成身分驗證。

除了 AuthType 之外,您也可以使用資源型政策授予其他 AWS 帳戶 呼叫函數的許可。如需詳細資訊,請參閱在 Lambda 中檢視資源型 IAM 政策

如需安全性的其他洞見,您可以使用 AWS Identity and Access Management Access Analyzer 來全面分析對函數 URL 的外部存取。IAM Access Analyzer 也能監控您 Lambda 函數新增或更新的許可,以協助您識別授予公有和跨帳戶存取權的許可。IAM Access Analyzer 可供任何 AWS 客戶免費使用。若要開始使用 IAM Access Analyzer,請參閱使用 AWS IAM Access Analyzer

本頁面提供兩種驗證類型的資源型政策範例,並說明如何使用 AddPermission API 操作或 Lambda 主控台來建立這些政策。如需了解在設定許可後呼叫函數 URL 的相關資訊,請參閱呼叫 Lambda 函數 URL

使用 AWS_IAM 驗證類型

如果您選擇採用 AWS_IAM 驗證類型,使用者必須擁有 lambda:InvokeFunctionUrl 許可才能呼叫您的 Lambda 函數 URL。視提出呼叫請求的使用者而定,您可能必須使用資源型政策授予此許可。

如果提出請求的委託人與函數 URL AWS 帳戶 位於相同位置,則委託人必須在其身分型政策擁有lambda:InvokeFunctionUrl許可,或在函數的資源型政策中授予許可。換句話說,如果使用者已經由身分型政策擁有 lambda:InvokeFunctionUrl 許可,即可自行決定是否使用資源型政策。政策評估作業需遵循決定是否允許或拒絕帳戶中的請求一文所述的規則。

如果提出請求的委託人位於不同帳戶,則委託人必須同時經由身分型政策取得 lambda:InvokeFunctionUrl 許可,並且針對其嘗試呼叫的函數,透過資源型政策取得許可。在這些跨帳戶的情況中,政策評估作業需遵循決定是否允許跨帳戶請求一文所述的規則。

對於跨帳戶互動範例,下列資源型政策允許 中的example AWS 帳戶 444455556666角色叫用與函數 相關聯的函數 URLmy-function

範例 函數 URL 跨帳戶呼叫政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }

您可以依照以下步驟,透過主控台建立此政策陳述式:

將 URL 呼叫許可授予其他帳戶 (主控台)
  1. 開啟 Lambda 主控台中的函數頁面

  2. 選擇您要授予 URL 呼叫許可的函數名稱。

  3. 依序選擇 Configuration (組態) 索引標籤和 Permissions (許可)。

  4. Resource-based policy (資源型政策) 底下,選擇 Add permissions (新增許可)。

  5. 選擇 Function URL (函數 URL)。

  6. 針對 Auth type (驗證類型) 選擇 AW_IAM

  7. (選用) 針對 Statement ID (陳述式 ID) 輸入政策陳述式的陳述式 ID。

  8. 依據您要授予許可的使用者或角色,在主體輸入其 Amazon Resource Name (ARN)。例如:444455556666

  9. 選擇 Save (儲存)。

或者,您可以使用下列 add-permission AWS Command Line Interface (AWS CLI) 命令來建立此政策陳述式:

aws lambda add-permission --function-name my-function \ --statement-id example0-cross-account-statement \ --action lambda:InvokeFunctionUrl \ --principal 444455556666 \ --function-url-auth-type AWS_IAM

在先前的範例中,lambda:FunctionUrlAuthType 條件索引鍵值為 AWS_IAM。唯有當函數 URL 的驗證類型也是 AWS_IAM 時,此政策才會允許您存取函數 URL。

使用 NONE 驗證類型

重要

當您的函數 URL 驗證類型為 NONE,而且資源型政策授予公有存取權時,任何未經身分驗證的使用者只要取得您的函數 URL,都可以呼叫您的函數。

部分情況下,您可能需要將函數 URL 設為公有狀態。例如,您可能希望為直接透過 Web 瀏覽器提出的請求提供服務。如要允許使用者公開存取您的函數 URL,請選擇 NONE 驗證類型。

如果您選擇 NONE 驗證類型,Lambda 就不會使用 IAM 對存取函數 URL 的請求執行身分驗證。不過,使用者仍必須擁有 lambda:InvokeFunctionUrl 許可,才能成功呼叫您的函數 URL。您可以使用以下資源型政策來授予 lambda:InvokeFunctionUrl 許可:

範例 函數 URL 呼叫政策 (適用於所有未經身分驗證的委託人)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "NONE" } } } ] }
注意

當您NONE透過主控台或 AWS Serverless Application Model (AWS SAM) 建立具有身分驗證類型的函數 URL 時,Lambda 會自動為您建立上述以資源為基礎的政策陳述式。如果政策早已建立,或建立應用程式的使用者或角色沒有適當的許可,Lambda 就不會為您建立該政策。如果您直接使用 AWS CloudFormation AWS CLI、 或 Lambda API,則必須自行新增lambda:InvokeFunctionUrl許可。如此一來,您的函數就會設為公有狀態。

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

此陳述式的 lambda:FunctionUrlAuthType 條件索引鍵值為 NONE。唯有當函數 URL 的驗證類型也是 NONE 時,此政策陳述式才會允許您存取函數 URL。

如果函數的資源型政策並未授予 lambda:invokeFunctionUrl 許可,當使用者嘗試呼叫您的函數 URL,畫面會顯示 403 禁止錯誤代碼,即使函數 URL 使用 NONE 驗證類型,依然會發生此錯誤。

控管和存取權控制

除了函數 URL 呼叫許可之外,您也可以控制函數 URL 設定動作的存取權。Lambda 支援以下適用於函數 URL 的 IAM 政策動作:

  • lambda:InvokeFunctionUrl – 使用函數 URL 呼叫 Lambda 函數。

  • lambda:CreateFunctionUrlConfig – 建立函數 URL 並設定其 AuthType

  • lambda:UpdateFunctionUrlConfig – 更新函數 URL 組態及其 AuthType

  • lambda:GetFunctionUrlConfig – 檢視函數 URL 的詳細資訊。

  • lambda:ListFunctionUrlConfigs – 列出函數 URL 組態。

  • lambda:DeleteFunctionUrlConfig – 刪除函數 URL。

注意

Lambda 主控台僅支援為 lambda:InvokeFunctionUrl 新增許可。如需執行其他所有動作,您必須使用 Lambda API 或 AWS CLI新增許可。

若要允許或拒絕對其他 AWS 實體的函數 URL 存取,請在 IAM 政策中包含這些動作。例如,以下政策授予 example 角色以更新my-function帳戶 中 AWS 帳戶 函數的函數 URL 的444455556666許可123456789012

範例 跨帳戶函數 URL 政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action": "lambda:UpdateFunctionUrlConfig", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function" } ] }

條件索引鍵

如要精細控制函數 URL 的存取權,請使用條件索引鍵。Lambda 為函數 URL 額外支援一種條件索引鍵:FunctionUrlAuthTypeFunctionUrlAuthType 索引鍵可定義描述函數 URL 所用驗證類型的列舉值。此值可以是 AWS_IAMNONE

您可以在與函數相關聯的政策中使用此條件索引鍵。例如,您可能希望限制哪些人可以變更函數 URL 的組態。若要針對 URL 驗證類型為 NONE 的所有函數拒絕所有 UpdateFunctionUrlConfig 請求,您可以定義以下政策:

範例 明確拒絕請求的函數 URL 政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action":[ "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "NONE" } } } ] }

若要授予許可中example AWS 帳戶 444455556666的角色,以對 URL 驗證類型 的函數進行 CreateFunctionUrlConfigUpdateFunctionUrlConfig請求AWS_IAM,您可以定義下列政策:

範例 明確允許請求的函數 URL 政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action":[ "lambda:CreateFunctionUrlConfig", "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }

您也可以在服務控制政策(SCP) 中使用此條件索引鍵。在 AWS Organizations中使用 SCP 管理整個組織的許可。例如,若要拒絕使用者建立或更新使用 AWS_IAM 以外驗證類型的函數 URL,請使用以下服務控制政策:

範例 明確拒絕請求的函數 URL SCP
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action":[ "lambda:CreateFunctionUrlConfig", "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:*:123456789012:function:*", "Condition": { "StringNotEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }

下一個主題:

呼叫函數 URL

上一個主題:

函數 URL
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。