本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SAM CLI 故障排除
本节详细介绍了在使用、安装和管理 Amazon Serverless Application Model 命令行界面(Amazon SAM CLI)时如何排查错误消息。
故障排除
有关与 Amazon SAM CLI 相关的故障排除指导,请参阅排查 安装错误。
错误消息
Curl 错误:“curl:(6) 无法解析:...”
尝试调用 API Gateway 端点时,您遇到以下错误:
curl: (6) Could not resolve: endpointdomain
(Domain name not found)
这意味着您向一个无效的域发送了请求。如果您的无服务器应用程序未能成功部署,或者您的 curl 命令中有错别字,则可能会发生这种情况。使用 Amazon CloudFormation 控制台或 Amazon 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
文件中定义了堆栈名称值。 -
Amazon SAM CLI 会首先在
samconfig.toml
文件中查找堆栈名称。如果已指定堆栈名称,则参数将作为逻辑 ID 值传递。 - 解决方案:改为传递函数的逻辑 ID。
-
您可以将函数的逻辑 ID 作为参数而不是函数的 ARN 传递。
- 解决方案:从配置文件中移除堆栈名称值。
-
您可以从配置文件中移除堆栈名称值。这可防止 Amazon SAM CLI 将函数 ARN 作为逻辑 ID 值传递。
修改配置文件后,运行
sam build
。
错误:无法创建托管资源:无法找到凭证
运行 sam deploy 命令时,您遇到以下错误:
Error: Failed to create managed resources: Unable to locate credentials
这意味着,您尚未设置 Amazon 凭证以使 Amazon SAM CLI 能够进行 Amazon 服务调用。要解决此问题,您必须设置 Amazon 凭证。有关更多信息,请参阅 设置 Amazon 凭证。
错误:Windows 中的 FileNotFoundError
在 Windows 的 Amazon SAM CLI 中运行命令时,您可能会遇到以下错误:
Error: FileNotFoundError
可能的原因:Amazon 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-cli
v1.58.0 可能依赖于aws-sam-translator
v1.51.0。如果您使用 pip 安装 Amazon SAM CLI,然后安装另一个依赖于较新版本
aws-sam-translator
的软件包,则会出现以下情况:-
将会安装较新版本的
aws-sam-translator
。 -
当前版本的
aws-sam-cli
和较新版本的aws-sam-translator
可能不兼容。 -
当您使用 Amazon SAM CLI 时,将会出现依赖项解析程序错误。
解决方案:
-
使用 Amazon SAM CLI 本机软件包安装程序。
-
使用 pip 卸载 Amazon SAM CLI。有关说明,请参阅 卸载 Amazon SAM CLI。
-
使用本机软件包安装程序安装 Amazon SAM CLI。有关说明,请参阅 安装 Amazon SAM CLI。
-
必要时,使用本机软件包安装程序升级 Amazon SAM CLI。有关说明,请参阅 升级 Amazon SAM CLI。
-
-
如果您必须使用 pip,我们建议您将 Amazon SAM CLI 安装到虚拟环境中。这样可确保干净的安装环境,并能在出现错误时提供隔离环境。有关说明,请参阅 使用 pip 在虚拟环境中安装 Amazon SAM CLI。
-
错误:没有‘remote’这样的命令
运行 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'....
- 可能的原因:您的 Amazon SAM CLI 版本已过时。
-
Amazon SAM CLI
sam remote invoke
命令是随 Amazon SAM CLI 1.88.0 版本发布的。可以运行sam --version
命令查看版本。 - 解决方案:将 Amazon SAM CLI 升级到最新版本。
-
有关说明,请参阅 升级 Amazon SAM CLI。
错误:在本地运行 Amazon SAM 项目需要 Docker。您安装了吗?
运行 sam local start-api 命令时,您遇到以下错误:
Error: Running Amazon 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
来回应此提示,即表明您不同意继续部署。
要解决此问题,您具有以下选项:
-
在经授权的情况下配置应用程序。有关配置授权的更多信息,请参阅 使用 Amazon SAM 模板控制 API 访问。
-
如果您打算在未经授权的情况下拥有可公开访问的 API 端点,请重新开始部署并用
Y
来回答此问题,以表明您同意部署。
消息:身份验证令牌缺失
尝试调用 API Gateway 端点时,您遇到以下错误:
{"message":"Missing Authentication Token"}
这意味着您向正确的域发送了请求,但系统无法识别 URI。要解决此问题,请验证完整的 URL,然后使用正确的 URL 更新 curl 命令。
警告消息
警告:... Amazon 将不再维护 Amazon SAM 的 Homebrew 安装程序...
使用 Homebrew 安装 Amazon SAM CLI 时,您看到以下警告消息:
Warning: ... Amazon will no longer maintain the Homebrew installer for Amazon SAM (aws/tap/aws-sam-cli). For AWS supported installations, use the first party installers ...
- 潜在原因:Amazon 不再维护 Homebrew 支持。
-
从 2023 年 9 月起,Amazon 将不再维护 Amazon SAM CLI 的 Homebrew 安装程序。
解决方案:使用 Amazon 支持的安装方法。
-
可在 安装 Amazon SAM CLI 中找到 Amazon 支持的安装方法。
解决方案:要继续使用 Homebrew,请使用社区托管的安装程序。
-
您可以自行决定使用社区托管的 Homebrew 安装程序。有关说明,请参阅 使用 Homebrew 管理 Amazon SAM CLI。
-