AWS SAM CLI 故障診斷 - AWS Serverless Application Model

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

AWS SAM CLI 故障診斷

本節提供有關如何在使用、安裝和管理 AWS Serverless Application Model 命令列界面 () 時疑難排解錯誤訊息的詳細資訊AWS SAM CLI。

疑難排解

如需與 相關的疑難排解指引 AWS SAM CLI,請參閱 對安裝錯誤進行故障診斷

錯誤訊息

Curl 錯誤:「curl: (6) 無法解析:...」

嘗試叫用 API Gateway 端點時,您會看到下列錯誤:

curl: (6) Could not resolve: endpointdomain (Domain name not found)

這表示您嘗試將請求傳送至無效的網域。如果您的無伺服器應用程式無法成功部署,或您的curl命令中有錯別字,就會發生這種情況。使用 CloudFormation 主控台或 驗證應用程式是否已成功部署 AWS CLI,並驗證您的curl命令是否正確。

錯誤:找不到具有指定堆疊名稱的確切資源資訊

在包含單一 Lambda 函數資源的應用程式上執行 sam remote invoke命令時,您會看到下列錯誤:

Error: Can't find exact resource information with given <stack-name>. Please provide full resource ARN or --stack-name to resolve the ambiguity.
可能原因:您未提供 --stack-name選項。

如果未提供函數 ARN 做為引數,則sam remote invoke命令需要提供 --stack-name選項。

解決方案:提供 --stack-name選項。

以下是範例:

$ sam remote invoke --stack-name sam-app Invoking Lambda Function HelloWorldFunction START RequestId: 40593abb-e1ad-4d99-87bd-ac032e364e82 Version: $LATEST END RequestId: 40593abb-e1ad-4d99-87bd-ac032e364e82 REPORT RequestId: 40593abb-e1ad-4d99-87bd-ac032e364e82 Duration: 11.31 ms Billed Duration: 12 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 171.71 ms {"statusCode":200,"body":"{\"message\":\"hello world\"}"}%

錯誤:找不到堆疊名稱中的資源資訊

執行 sam remote invoke命令並以引數形式傳遞 Lambda 函數 ARN 時,您會看到下列錯誤:

Error: Can't find resource information from stack name (<stack-name>) and resource id (<function-id>)
可能原因:您在 samconfig.toml 檔案中已定義堆疊名稱值。

第一個 AWS SAM CLI會檢查您的samconfig.toml檔案是否有堆疊名稱。如果指定,引數會以邏輯 ID 值傳遞。

解決方案:改為傳遞函數的邏輯 ID。

您可以傳遞函數的邏輯 ID 做為引數,而不是函數的 ARN。

解決方案:從您的組態檔案移除堆疊名稱值。

您可以從組態檔案移除堆疊名稱值。這可防止 AWS SAM CLI將函數 ARN 做為邏輯 ID 值傳遞。

修改組態檔案sam build後執行 。

錯誤:無法建立受管資源:找不到登入資料

執行 sam deploy命令時,您會看到下列錯誤:

Error: Failed to create managed resources: Unable to locate credentials

這表示您尚未設定 AWS 登入資料,讓 AWS SAM CLI能夠進行 AWS 服務呼叫。若要修正此問題,您必須設定 AWS 登入資料。如需詳細資訊,請參閱設定 AWS 登入資料

錯誤:Windows 中的 FileNotFoundError

在 Windows 上執行 命令 AWS SAM CLI時,您可能會看到下列錯誤:

Error: FileNotFoundError

可能原因: AWS SAM CLI可能會與超過 Windows 路徑上限的檔案路徑互動。

解決方案:若要解決此問題,必須啟用新的長路徑行為。若要這樣做,請參閱 Microsoft Windows 應用程式開發文件中的在 Windows 10 版本 1607 和更新版本中啟用長路徑

錯誤:pip 的相依性解析程式...

範例錯誤文字:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. 
aws-sam-cli 1.58.0 requires aws-sam-translator==1.51.0, but you have aws-sam-translator 1.58.0 which is incompatible. 
aws-sam-cli 1.58.0 requires typing-extensions==3.10.0.0, but you have typing-extensions 4.4.0 which is incompatible.
可能原因:如果您使用 pip 來安裝套件,套件之間的相依性可能會衝突。

套件的每個版本aws-sam-cli都取決於aws-sam-translator套件的版本。例如,aws-sam-cliv1.58.0 可能取決於 aws-sam-translator v1.51.0。

如果您使用 安裝 AWS SAM CLI pip,然後安裝另一個取決於較新版本 的套件aws-sam-translator,則會發生下列情況:

  • aws-sam-translator 將安裝較新版本的 。

  • 目前版本的 aws-sam-cli和較新版本的 aws-sam-translator可能不相容。

  • 當您使用 時 AWS SAM CLI,會發生相依性解析程式錯誤。

解決方案:
  1. 使用 AWS SAM CLI原生套件安裝程式。

    1. 使用 pip 解除安裝 AWS SAM CLI。如需說明,請參閱解除安裝 AWS SAM CLI

    2. 使用原生套件安裝程式安裝 AWS SAM CLI。如需說明,請參閱安裝 AWS SAM CLI

    3. 必要時,請使用原生套件安裝程式升級 AWS SAM CLI。如需說明,請參閱升級 AWS SAM CLI

  2. 如果您必須使用 pip,我們建議您將 AWS SAM CLI 安裝到虛擬環境中。這可確保乾淨的安裝環境,並在發生錯誤時隔離環境。如需說明,請參閱使用 將 AWS SAM CLI 安裝到虛擬環境中 pip

錯誤:沒有這類命令「遠端」

執行 sam remote invoke命令時,您會看到下列錯誤:

$ sam remote invoke ... 2023-06-20 08:15:07 Command remote not available Usage: sam [OPTIONS] COMMAND [ARGS]... Try 'sam -h' for help. Error: No such command 'remote'.
可能原因:您的 AWS SAM CLI版本已過期。

此 AWS SAM CLIsam remote invoke命令已發行 AWS SAM CLI1.88.0 版。您可以執行 sam --version命令來檢查您的版本。

解決方案:將您的 AWS SAM CLI 升級至最新版本。

如需說明,請參閱升級 AWS SAM CLI

錯誤:在本機執行 AWS SAM 專案需要 Docker。是否已安裝?

執行 sam local start-api命令時,您會看到下列錯誤:

Error: Running AWS SAM projects locally requires Docker. Have you got it installed?

這表示您尚未Docker正確安裝 。 Docker 需要在本機測試您的應用程式。若要修正此問題,請遵循為您的開發主機安裝 Docker 的指示。如需詳細資訊,請參閱安裝 Docker

錯誤:未滿足安全限制

執行 時sam deploy --guided,系統會提示您輸入問題 Function may not have authorization defined, Is this okay? [y/N]。如果您以 N(預設回應) 回應此提示,您會看到下列錯誤:

Error: Security Constraints Not Satisfied

提示會通知您,您即將部署的應用程式可能已設定可公開存取的 Amazon API Gateway API,無需授權。透過N回應此提示,您表示這是不正常的。

若要修正此問題,您有下列選項:

  • 使用授權設定您的應用程式。如需設定授權的資訊,請參閱 使用 AWS SAM 範本控制 API 存取

  • 如果您的目的是在未經授權的情況下擁有可公開存取的 API 端點,請重新啟動部署,並使用 回應此問題Y,以表示您可以進行部署。

訊息:缺少身分驗證字符

嘗試叫用 API Gateway 端點時,您會看到下列錯誤:

{"message":"Missing Authentication Token"}

這表示您嘗試將請求傳送至正確的網域,但無法辨識 URI。若要修正此問題,請驗證完整的 URL,並使用正確的 URL 更新curl命令。

警告訊息

警告:... AWS 將不再維護 的Homebrew安裝程式 AWS SAM ...

使用 安裝 AWS SAM CLI 時Homebrew,您會看到下列警告訊息:

Warning: ... AWS will no longer maintain the Homebrew installer for AWS SAM (aws/tap/aws-sam-cli). 
				For AWS supported installations, use the first party installers ...
潛在原因: AWS 不再維持Homebrew支援。

從 2023 年 9 月開始, AWS 將不再維護 的Homebrew安裝程式 AWS SAM CLI。

解決方案:使用 AWS 支援的安裝方法。
解決方案:若要繼續使用 Homebrew,請使用 社群受管安裝程式。