本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS SAM 在本地调试函数
您可以将 AWS SAM 与各种 AWS 工具包和调试器配合使用,在本地测试和调试无服务器应用程序。通过逐步调试 Lambda 函数,您可以在本地环境中逐行或逐条指令地识别和修复应用程序中的问题。
您可以执行本地逐步调试的一些方法包括设置断点、检查变量以及逐行执行函数代码。本地分步调试使您可以发现和解决可能在云中遇到的问题,从而缩短反馈循环。
您可以使用 AWS 工具包进行调试,也可以在调试模式下运行 AWS SAM。有关详细信息,请参阅本节中的主题。
使用 AWS Toolkits
AWS Toolkits 是集成式开发环境(IDE)插件,可让您执行许多常见的调试任务,例如设置断点、检查变量和逐行执行函数代码。AWS通过该工具包,您可以更轻松地开发、调试和部署使用 AWS SAM 构建的无服务器应用程序。它们提供了构建、测试、调试、部署和调用集成到 IDE 中的 Lambda 函数的体验。
有关可与 AWS SAM 配合使用的 AWS Toolkits 的更多信息,请参阅以下内容:
有多种 AWS Toolkits 适用于不同的 IDE 和运行时系统组合。下表列出了支持 AWS SAM 应用程序逐步调试的常见 IDE/运行时系统组合:
| IDE | 运行时 | AWS Toolkit | 逐步调试说明 |
|---|---|---|---|
| Visual Studio Code |
|
AWS Toolkit for Visual Studio Code | 《AWS Toolkit for Visual Studio Code 用户指南》中的使用 AWS Serverless Application |
| AWS Cloud9 |
|
AWS Cloud9,AWS Toolkits 已启用1 |
《AWS Cloud9 用户指南》中的通过 AWS Toolkit 使用 AWS 无服务器应用程序 |
| WebStorm | Node.js | AWS Toolkit for JetBrains2 |
在 AWS Toolkit for JetBrains 中运行(调用)或调试本地函数 |
| PyCharm | Python | AWS Toolkit for JetBrains2 |
在 AWS Toolkit for JetBrains 中运行(调用)或调试本地函数 |
| Rider | .NET | AWS Toolkit for JetBrains2 |
在 AWS Toolkit for JetBrains 中运行(调用)或调试本地函数 |
| IntelliJ | Java | AWS Toolkit for JetBrains2 |
在 AWS Toolkit for JetBrains 中运行(调用)或调试本地函数 |
| GoLand | Go(转到) | AWS Toolkit for JetBrains2 |
在 AWS Toolkit for JetBrains 中运行(调用)或调试本地函数 |
注意:
-
要使用 AWS Cloud9 逐步调试 AWS SAM 应用程序,必须启用 AWS Toolkits。有关更多信息,请参阅《AWS Cloud9 用户指南》中的启用 AWS Toolkit。
-
要使用 AWS Toolkit for JetBrains 分步调试 AWS SAM 应用程序,必须先按照 AWS Toolkit for JetBrains 中安装 AWS Toolkit for JetBrains 中的说明进行安装和配置。
在调试模式下在本地运行 AWS SAM
除了与 AWS Toolkits 集成外,您还可以在调试模式下运行 AWS SAM 以附加到第三方调试器,例如 ptvsd
要在调试模式下运行 AWS SAM,请使用命令 sam local invoke 或 sam local start-api 搭配 --debug-port 或 -d 选项。
例如:
# Invoke a function locally in debug mode on port 5858 sam local invoke -d 5858 <function logical id> # Start local API Gateway in debug mode on port 5858 sam local start-api -d 5858
注意
如果使用 sam local start-api,则本地 API Gateway 实例会公开您的所有 Lambda 函数。但是,因为您能指定一个调试端口,所以每次只能调试一个函数。您需要在 AWS SAM CLI 绑定到端口之前调用 API,以允许调试器进行连接。