本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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-nameInvoking 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-app
錯誤:找不到堆疊名稱中的資源資訊
執行 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-translatorv1.51.0。如果您使用 安裝 AWS SAM CLI pip,然後安裝另一個取決於較新版本 的套件
aws-sam-translator,則會發生下列情況:-
aws-sam-translator將安裝較新版本的 。 -
目前版本的
aws-sam-cli和較新版本的aws-sam-translator可能不相容。 -
當您使用 時 AWS SAM CLI,會發生相依性解析程式錯誤。
解決方案:
-
使用 AWS SAM CLI原生套件安裝程式。
-
使用 pip 解除安裝 AWS SAM CLI。如需說明,請參閱解除安裝 AWS SAM CLI。
-
使用原生套件安裝程式安裝 AWS SAM CLI。如需說明,請參閱安裝 AWS SAM CLI。
-
必要時,請使用原生套件安裝程式升級 AWS SAM CLI。如需說明,請參閱升級 AWS SAM CLI。
-
-
如果您必須使用 pip,我們建議您將 AWS SAM CLI 安裝到虛擬環境中。這可確保乾淨的安裝環境,並在發生錯誤時隔離環境。如需說明,請參閱使用 將 AWS SAM CLI 安裝到虛擬環境中 pip。
-
錯誤:沒有這類命令「遠端」
執行 sam remote invoke命令時,您會看到下列錯誤:
$sam remote invoke2023-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 CLI
sam 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 支援的安裝方法。
-
您可以在 找到 AWS 支援的安裝方法安裝 AWS SAM CLI。
解決方案:若要繼續使用 Homebrew,請使用 社群受管安裝程式。
-
您可以自行決定使用 社群受管Homebrew安裝程式。如需說明,請參閱使用 AWS SAM CLI管理 Homebrew。
-