支付
此项目包含可以使用SAM CLI部署的无服务器应用程序的源代码和支持文件。它包括以下文件和文件夹。
- hello world-用TypeScript编写的应用程序Lambda函数的代码。
- events-可用于调用函数的调用事件。
- hello world/tests-应用程序代码的单元测试。
- template.yaml-定义应用程序AWS资源的模板。
该应用程序使用多个AWS资源,包括Lambda函数和API网关API。这些资源在 template.yaml 此项目中的文件。您可以通过更新应用程序代码的相同部署过程更新模板以添加AWS资源。
如果您更喜欢使用集成开发环境(IDE)来构建和测试您的应用程序,可以使用AWS Toolkit。\ AWS Toolkit是一个用于流行IDE的开源插件,它使用SAM CLI在AWS上构建和部署无服务器应用程序。AWS Toolkit还为Lambda函数代码添加了一个简化的调试步骤。请参阅以下链接以开始。
部署示例应用程序
无服务器应用程序模型命令行界面(SAM CLI)是AWS CLI的扩展,增加了构建和测试Lambda应用程序的功能。它使用Docker在与Lambda匹配的Amazon Linux环境中运行您的函数。它还可以模拟应用程序的构建环境和API。
要使用SAM CLI,您需要以下工具。
- SAM CLI- 安装SAM CLI
- Node.js- ,包括NPM包管理工具。
- Docker-
要首次构建和部署应用程序,请在shell中运行以下命令:
sam build
sam deploy --guided第一个命令将构建应用程序的源代码。第二个命令将打包您的应用程序并将其部署到AWS,并显示一系列提示:
- 堆栈名称:要部署到CloudFormation的堆栈的名称。这应该是您的帐户和地区独有的,一个好的起点是与您的项目名称相匹配。
- AWS区域:您要将应用程序部署到的AWS区域。
- 部署前确认更改:如果设置为“是”,则任何更改集都将在执行前显示给您进行手动审查。如果设置为否,AWS SAM CLI将自动部署应用程序更改。
- 允许创建SAM CLI IAM角色:许多AWS SAM模板(包括本示例)创建了访问AWS服务所需的AWS Lambda函数所需的Amazon IAM角色。默认情况下,这些权限的范围被缩小到所需的最小权限。要部署创建或修改IAM角色的AWS CloudFormation堆栈,请
CAPABILITY_IAM价值capabilities必须提供。如果未通过此提示提供权限,则要部署此示例,您必须显式传递--capabilities CAPABILITY_IAM到sam deploy命令。 - 将参数保存到samconfig.toml:如果设置为yes,您的选择将保存到项目内的配置文件中,以便将来可以重新运行
sam deploy没有参数来部署对应用程序的更改。
您可以在部署后显示的输出值中找到API网关端点URL。
使用SAM CLI在本地构建和测试
使用构建您的应用程序 sam build 命令。
payment$ sam buildSAM CLI安装中定义的依赖关系 hello-world/package.json,使用esbuild编译TypeScript,创建部署包,并将其保存在 .aws-sam/build 文件夹。
通过使用测试事件直接调用单个函数来测试它。事件是一个JSON文档,表示函数从事件源接收的输入。测试事件包含在 events 此项目中的文件夹。
在本地运行函数,并使用 sam local invoke 命令。
payment$ sam local invoke HelloWorldFunction --event events/event.jsonSAM CLI还可以模拟应用程序的API。使用 sam local start-api 以在端口3000上本地运行API。
payment$ sam local start-api
payment$ curl http://localhost:3000/SAM CLI读取应用程序模板以确定API的路由及其调用的函数。这 Events 每个函数定义上的属性包括每个路径的路由和方法。
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get向应用程序添加资源
获取、跟踪和过滤Lambda函数日志
为了简化故障排除,SAM CLI有一个名为 sam logs. sam logs 允许您从命令行获取部署的Lambda函数生成的日志。除了在终端上打印日志外,此命令还有几个漂亮的功能,可以帮助您快速找到错误。
NOTE:此命令适用于所有AWS Lambda函数;而不仅仅是使用SAM部署的那些。
payment$ sam logs -n HelloWorldFunction --stack-name payment --tail您可以在中找到有关过滤Lambda函数日志的更多信息和示例 SAM CLI文档.
单元测试
测试定义见 hello-world/tests 此项目中的文件夹。使用NPM安装 Jest测试框架 并运行单元测试。
payment$ cd hello-world
hello-world$ npm install
hello-world$ npm run test清理
要删除您创建的示例应用程序,请使用AWS CLI。假设您将项目名称用作堆栈名称,则可以运行以下命令:
sam delete --stack-name payment资源
看 AWS SAM开发人员指南 介绍SAM规范、SAM CLI和无服务器应用程序概念。
接下来,您可以使用AWS无服务器应用程序存储库部署超越hello world示例的即用型应用程序,并了解作者如何开发他们的应用程序: AWS无服务器应用程序存储库主页
