本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
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-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 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-cli
套aws-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,會發生相依性解析程式錯誤。
解決方案:
-
使用 AWS SAMCLI原生套件安裝程式。
-
卸載 AWS SAMCLI使用 pip。如需說明,請參閱解除安裝 AWS SAMCLI。
-
AWS SAMCLI使用原生套件安裝程式安裝。如需說明,請參閱安裝 AWS SAM CLI。
-
必要時,請 AWS SAMCLI使用原生套件安裝程式升級。如需說明,請參閱升級 AWS SAMCLI。
-
-
如果必須使用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 SAMCLI
sam 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 支援的安裝方法。
-
您可以在中找到 AWS 支援的安裝方法安裝 AWS SAM CLI。
解決方案:若要繼續使用Homebrew,請使用社群管理的安裝程式。
-
您可以自行決定使用社群管理的Homebrew安裝程式。如需說明,請參閱 管理 AWS SAMCLI與 Homebrew。
-