本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS SAM CLI 故障排除
本节详细介绍如何在使用、安装和管理 AWS Serverless Application Model 命令行界面 (AWS SAMCLI) 时对错误消息进行故障排除。
故障排除
有关与的疑难解答指南 AWS SAMCLI,请参阅排查 安装错误。
错误消息
Curl 错误:“curl:(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 SAM CLI 会首先在
samconfig.toml
文件中查找堆栈名称。如果已指定堆栈名称,则参数将作为逻辑 ID 值传递。 - 解决方案:改为传递函数的逻辑 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在 Windows 中运行命令时,你可能会看到以下错误:
Error: FileNotFoundError
可能的原因: AWS SAMCLI可能会与超过 Windows 最大路径限制的文件路径交互。
解决方案:要解决此问题,必须启用新的长路径行为。为此,请参阅微软 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 安装 AWS SAM CLI,然后安装另一个依赖于较新版本
aws-sam-translator
的软件包,则会出现以下情况:-
将会安装较新版本的
aws-sam-translator
。 -
当前版本的
aws-sam-cli
和较新版本的aws-sam-translator
可能不兼容。 -
使用时 AWS SAMCLI,将出现依赖关系解析器错误。
解决方案:
-
使用 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到虚拟环境中。这样可确保干净的安装环境,并能在出现错误时提供隔离环境。有关说明,请参阅使用 pip 在虚拟环境中安装 AWS 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'....
- 可能的原因:您的 AWS SAM CLI 版本已过时。
-
该 AWS SAMCLI
sam remote invoke
命令是在 1.88.0 AWS SAMCLI 版本中发布的。可以运行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
该提示提示您即将部署的应用程序可能在未经授权的情况下API配置了可公开访问的 Amazon API Gateway。用 N
来回应此提示,即表明您不同意继续部署。
要解决此问题,您具有以下选项:
-
在经授权的情况下配置应用程序。有关配置授权的更多信息,请参阅 使用您的 AWS SAM 模板控制API访问权限。
-
如果您打算在未经授权的情况下拥有可公开访问的API终端节点,请重新启动部署并回答此问题,
Y
以表明您同意部署。
消息:身份验证令牌缺失
尝试调用API网关终端节点时,您会看到以下错误:
{"message":"Missing Authentication Token"}
这意味着您已尝试向正确的域发送请求,但URI无法识别。要修复此问题,请验证完整URL内容,然后使用正确的curl命令更新命令URL。
警告消息
警告:... AWS 将不再为 AWS SAM ... 维护Homebrew安装程序
使用 Homebrew 安装 AWS SAM CLI 时,您看到以下警告消息:
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 安装程序。有关说明,请参阅 使用 Homebrew 管理 AWS SAM CLI。
-