選取您的 Cookie 偏好設定

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

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

針對 Lambda 中的調用問題進行疑難排解

焦點模式
針對 Lambda 中的調用問題進行疑難排解 - AWS Lambda

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

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

當您調用 Lambda 函數時,Lambda 會先驗證請求並檢查擴展容量,再將事件傳送到您的函數,或是事件佇列 (針對非同步調用)。導致調用錯誤的可能原因包含請求參數、事件結構、函數設定、使用者許可、資源許可或限制等問題。

如果您直接調用函數,您會在 Lambda 的回應中看到調用錯誤。如果您透過事件來源映射或是其他服務以非同步方式調用您的函數,您可能會在日誌、無效字母佇列或是失敗事件目的地上找到錯誤。錯誤處理選項和重試行為會因您調用函數的方式,以及錯誤的類型而有所不同。

如需 Invoke 操作可以傳回的錯誤類型清單,請參閱調用

Lambda:函數在初始化階段逾時 (Sandbox.Timedout)

錯誤:任務在 3.00 秒後逾時

初始化階段出現逾時,Lambda 會在下一個調用請求到達時重新執行Init階段,以再次初始化執行環境。(我們將其稱為隱藏的初始化。) 不過,如果函數設定了較短的逾時持續時間 (通常大約 3 秒),則隱藏的初始化可能無法在配置的逾時前完成,導致Init階段再次逾時。或者,隱藏的初始化雖然完成,但留給調用階段的時間不夠,導致後者無法完成,從而造成Invoke階段逾時。

若要減少逾時錯誤,請使用以下其中一種或幾種策略:

  • 延長函數逾時期間:延長逾時,讓InitInvoke階段有時間成功完成。

  • 增加分配給函數的記憶體:更多的記憶體意味著更多的 CPU 運算能力,這可以加快InitInvoke階段的速度。

  • 最佳化函數初始化程式碼:縮短初始化所需的時間,以確保InitInvoke階段可以在設定的逾時內完成。

  • 新增錯誤處理措施:在函數程式碼中實作適當的錯誤處理措施,可防止 Lambda 執行環境失敗並重複觸發初始化嘗試。

IAM:lambda:InvokeFunction 未獲授權

錯誤:使用者 arn:aws:iam::123456789012:user/developer 無權對資源 my-function 執行 lambda:InvokeFunction

您的使用者或您擔任的角色必須有調用函數的許可。此要求也適用於 Lambda 函數及其他調用函數的運算資源。將 AWS 受管政策 AWSLambdaRole 新增至您的使用者,或新增允許對目標函數lambda:InvokeFunction執行動作的自訂政策。

注意

IAM 動作的名稱 (lambda:InvokeFunction) 指的是 Invoke Lambda API 操作。

如需詳細資訊,請參閱 在 中管理許可 AWS Lambda

Lambda:找不到有效的引導程序 (Runtime.InvalidEntrypoint)

錯誤:找不到有效的引導程序:[/var/task/bootstrap /opt/bootstrap]

當部署套件的根層級不包含名為 bootstrap 的可執行檔時,通常會發生此錯誤。例如,如果您使用 .zip 檔案部署 provided.al2023 函數,則 bootstrap 檔案必須位於 .zip 檔案的根層級,而不在目錄中。

Lambda:無法執行操作 ResourceConflictException

錯誤:ResourceConflictException:此時無法執行操作。函數量前處於下列狀態:擱置中

當您在建立時將函數連接到 Virtual Private Cloud (VPC) 時,函數會在 Lambda 建立彈性網路界面的同時,進入 Pending 狀態。在此期間,您無法調用或修改函數。如果您在建立後將函數連接到 VPC,則可以在更新擱置時調用該函數,但無法修改其程式碼或組態。

如需詳細資訊,請參閱 Lambda 函數狀態

Lambda:函數卡在待定狀態

錯誤: 函數停留在 Pending 狀態幾分鐘的時間。

如果函數卡在 Pending 狀態的時間超過六分鐘,請呼叫下列其中一個 API 操作來解除封鎖:

Lambda 會取消待處理的操作並將該函數放入 Failed 狀態。您接著可以嘗試另一個更新。

Lambda:一個函數正在使用所有並行

問題:單一函數正在使用所有可用的並行,造成其他函數遭到調節。

若要將 AWS 區域中您 AWS 帳戶的可用並行分割為集區,請使用預留並行。預留並行可確保函數一律會擴展至其受到指派的並行,且函數擴展的並行也不會超過其受到指派的並行。

一般:無法使用其他帳戶或服務調用函數

問題:您可以直接調用函數,但當其他服務或帳戶調用該函數時,它不會執行。

您在函數以資源為基礎的政策中,授予其他服務和帳戶調用函數的許可。如果調用者屬於另一個帳戶,則該使用者也必須具備函數的調用許可

一般:函數調用正在循環

問題: 在迴圈中連續調用函數。

這通常發生在函數在觸發它的相同 AWS 服務中管理資源時。例如,可以建立函數,將物件存放在所設定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中,該儲存貯體具有再次調用函數的通知。若要阻止函數執行,可將函數的可用並行處理降為零,這會限制所有將來的調用。然後,識別造成遞迴調用的程式碼路徑或組態錯誤。Lambda 會自動偵測並停止某些 AWS 服務和 SDKs遞迴迴圈。如需詳細資訊,請參閱使用 Lambda 遞迴迴圈偵測功能防止無限迴圈

Lambda:具有佈建並行的別名路由

問題: 在別名路由期間佈建並行溢出調用。

Lambda 使用簡單的概率模型來在兩個函數版本之間分配流量。在流量較低時,您可能會看到每個版本已設定流量百分比與實際流量百分比之間,存在很大差異。如果您的函數使用佈建並行,透過在別名路由作用期間設定較高數目的已佈建並行執行個體,則可以避免溢出調用

Lambda:使用佈建並行的冷啟動

問題:啟用佈建的並行後,您會看到冷啟動。

當函數上的並行執行次數少於或等於已設定的佈建並行層級,則不應該發生任何冷啟動。若要協助您確認佈建的並行是否能正常運作,請執行下列動作:

  • 請在函數版本或別名上檢查佈建的並行是否啟用

    注意

    函數的未發佈版本 ($LATEST) 無法設定佈建並行。

  • 確保您的觸發條件調用的是正確的函數版本或別名。例如,如果您使用的是 Amazon API Gateway,請檢查 API Gateway 調用的函數版本或別名具有佈建的並行,而不是 $LATEST。若要確認正在使用佈建的並行,您可以檢查 ProvisionedConcurrencyInvocations Amazon CloudWatch 指標。非零值表示函數正在初始化執行環境上處理調用。

  • 判斷您的函數並行是否超過已佈建並行的設定層級,方法是檢查 ProvisionedConcurrencySpilloverInvocations CloudWatch 指標。非零值表示所有已佈建的並行處於使用中的狀態,而某些調用會在冷啟動時發生。

  • 檢查調用頻率 (每秒請求數)。具有佈建並行的函數,每個佈建並行的請求速率上限為每秒 10 個。例如,設定為具備 100 個佈建並行的函數每秒可以處理 1,000 個請求。如果調用速率超過每秒 1,000 個請求,就可能會發生冷啟動。

Lambda:新版本的冷啟動

問題:在部署新版的函數時,您會看到冷啟動。

當您更新函數別名時,Lambda 會根據別名上設定的權重,自動將佈建的並行移至新版本。

錯誤:KMSDisabledException:因為使用的 KMS 金鑰已停用,Lambda 無法解密環境變數。請檢查函數的 KMS 金鑰設定。

如果您的 AWS Key Management Service (AWS KMS) 金鑰已停用,或如果允許 Lambda 使用金鑰的授予遭到撤銷,則可能會發生此錯誤。如果授權遺失,請將函數設定為使用不同的金鑰。然後重新分配自訂金鑰以重新建立授權。

EFS:函數無法掛載 EFS 檔案系統

錯誤:EFSMountFailureException:函數無法使用存取點 arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd 掛載 EFS 檔案系統。

檔案系統的掛載要求已遭拒。檢查函數的許可,並確認其檔案系統和存取點是否存在,且可供使用。

EFS:函數無法連線到 EFS 檔案系統

錯誤:EFSMountConnectivityException:函數無法使用存取點 arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd 連線至 Amazon EFS 檔案系統。請檢查您的網路組態,並再試一次。

函數無法使用 NFS 通訊協定 (TCP 連接埠 2049) 建立函數檔案系統的連線。為 VPC 的子網路檢查安全群組與路由組態

如果您在更新函數的 VPC 組態設定後遇到這些錯誤,請嘗試卸載並重新掛載檔案系統。

EFS:因為逾時,函數無法掛載 EFS 檔案系統

錯誤:EFSMountTimeoutException:由於掛載逾時,函數無法使用存取點 {arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd} 掛載 EFS 檔案系統

函數可以連線至函數的檔案系統,但掛載操作逾時。稍後再試一次,並考慮限制函數的並行數量,以減少檔案系統的負載。

Lambda:Lambda 偵測到耗時太久的 IO 程序

EFSIOException:函數執行個體已停止,因為 Lambda 偵測到耗時太久的 IO 處理序。

先前的調用逾時,而且 Lambda 無法終止函數處理常式。當附加的檔案系統用完高載額度,且基準輸送量不足時,可能會發生此問題。若要增加輸送量,您可以增加檔案系統的大小,或使用佈建的輸送量。

下一個主題:

執行

上一個主題:

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