AWS SAMCLI疑難排 - AWS Serverless Application Model

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

AWS SAMCLI疑難排

本節提供如何疑難排解使用、安裝和管理 AWS Serverless Application Model 指令行介面時的錯誤訊息的詳細資訊 (AWS SAMCLI)。

故障診斷

如需相關的疑難排解指引 AWS SAMCLI,請參閱排解安裝錯誤

錯誤訊息

捲曲錯誤:「捲曲:(6)無法解決:...」

嘗試呼叫API閘道端點時,您會看到下列錯誤:

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

這表示您嘗試將要求傳送至無效的網域。如果您的無伺服器應用程式無法成功部署,或您的命令中有錯字,就會發生這種情況。curl使用 AWS 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 SAMCLI第一個檢查您的samconfig.toml文件是否有堆棧名稱。如果有指定,則會將引數作為邏輯 ID 值傳遞。

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

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

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

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

修改配置文件sam build後運行。

錯誤:無法建立受管資源:找不到認證

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

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

這表示您尚未設定 AWS 認證來啟用進 AWS SAMCLI行 AWS 維修呼叫。若要修正此問題,您必須設定 AWS 認證。如需詳細資訊,請參閱 設定 AWS 認證

錯誤: FileNotFoundError 在視窗中

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

Error: FileNotFoundError

可能的原因:可 AWS SAMCLI能會與超過 Windows 最大路徑限制的檔案路徑互動。

解決方案:若要解決此問題,必須啟用新的長路徑行為。若要這麼做,請參閱 Microsoft 視窗應用程式開發文件中的啟用 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-cliaws-sam-translator件的某個版本。例如,aws-sam-cli版本 1.58.0 可能取決於 1.51.0 版。aws-sam-translator

如果您安裝 AWS SAMCLI usingpip,然後安裝另一個依賴於較新版本的套件aws-sam-translator,將會發生下列情況:

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

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

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

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

    1. 卸載 AWS SAMCLI使用 pip。如需說明,請參閱解除安裝 AWS SAMCLI

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

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

  2. 如果必須使用pip,建議您將安裝 AWS SAM CLI到虛擬環境中。如果發生錯誤,這可確保整潔的安裝環境和隔離的環境。如需說明,請參閱使用將其安裝 AWS SAMCLI到虛擬環境中 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 SAMCLI已過期。

該 AWS SAMCLIsam remote invoke命令與 AWS SAMCLI版本 1.88.0 一起發布。您可以通過運行sam --version命令來檢查您的版本。

解決方案:升級 AWS SAMCLI到最新版本。

如需說明,請參閱升級 AWS SAMCLI

錯誤:在本地運行 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

提示會通知您即將部署的應用程式可能已在未經授權的情況下API設定可公開存取的 Amazon API Gateway。通過響N應此提示,您說這是不確定的。

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

  • 使用授權配置您的應用程序。如需有關配置授權的資訊,請參閱使用 AWS SAM 範本控制API存取

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

消息:缺少身份驗證令牌

嘗試呼叫API閘道端點時,您會看到下列錯誤:

{"message":"Missing Authentication Token"}

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

警告訊息

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

AWS SAMCLI使用安裝時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 SAMCLI

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