本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon SAM 中创建应用程序
完成入门和阅读如何使用 Amazon Serverless Application Model(Amazon SAM)后,您就可以准备好在开发人员环境中创建 Amazon SAM 项目了。您的 Amazon SAM 项目将作为编写无服务器应用程序的起点。有关 Amazon SAM CLI sam init
命令选项的列表,请参阅 sam init。
Amazon Serverless Application Model 命令行界面 (Amazon SAM CLI) sam init
命令提供用于初始化新的无服务器应用程序的选项,由以下部分组成:
-
用于定义基础设施代码的 Amazon SAM 模板。
-
用于组织应用程序的文件夹结构。
-
Amazon Lambda 函数的配置。
要创建 Amazon SAM 项目,请参阅本节中的主题。
初始化新的无服务器应用程序
使用 Amazon SAM CLI 初始化新的无服务器应用程序
-
指向起始目录的
cd
。 -
在命令行中执行以下命令:
$
sam init
-
Amazon SAM CLI 会指导您完成交互式流程,以创建新的无服务器应用程序。
注意
如教程:使用以下命令部署 Hello World 应用程序 Amazon SAM中所述,此命令会初始化您的无服务器应用程序,从而创建您的项目目录。此目录将包含多个文件和文件夹。最重要的文件是
template.yaml
。这是 Amazon SAM 模板。您的 python 版本必须与 sam init 命令创建的template.yaml
文件中列出的 python 版本匹配。
选择起始模板
模板由以下部分组成:
-
用于基础设施代码的 Amazon SAM 模板。
-
用于组织项目文件的项目起始目录。例如,这可能包括:
-
Lambda 函数代码及其依赖项的结构。
-
包含用于本地测试的测试事件的
events
文件夹。 -
支持单元测试的
tests
文件夹。 -
用于配置项目设置的
samconfig.toml
文件。 -
ReadMe
文件和其他基本的项目起始文件。
以下是项目起始目录的示例:
sam-app ├── README.md ├── __init__.py ├── events │ └── event.json ├── hello_world │ ├── __init__.py │ ├── app.py │ └── requirements.txt ├── samconfig.toml ├── template.yaml └── tests ├── __init__.py ├── integration │ ├── __init__.py │ └── test_api_gateway.py ├── requirements.txt └── unit ├── __init__.py └── test_handler.py
-
您可以从可用的 Amazon 快速入门模板列表中进行选择,也可以自行提供自定义模板位置。
选择 Amazon 快速入门模板
-
当系统提示时,选择 Amazon 快速入门模板。
-
首先,选择要使用的 Amazon 快速入门模板。以下是示例:
Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice:
1
Choose an AWS Quick Start application template 1 - Hello World Example 2 - Multi-step workflow 3 - Serverless API 4 - Scheduled task 5 - Standalone function 6 - Data processing 7 - Hello World Example With Powertools 8 - Infrastructure event management 9 - Serverless Connector Hello World Example 10 - Multi-step workflow with Connectors 11 - Lambda EFS example 12 - DynamoDB Example 13 - Machine Learning Template:4
选择自定义模板位置
-
当系统提示时,选择自定义模板位置。
Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice:
2
-
Amazon SAM CLI 会提示您提供模板位置。
Template location (git, mercurial, http(s), zip, path):
为模板 .zip 文件存档提供以下任意位置:
-
GitHub 存储库 - .zip 文件在 GitHub 存储库中的路径。文件必须位于存储库的根目录中。
-
Mercurial 存储库 - .zip 文件在 Mercurial 存储库中的路径。文件必须位于存储库的根目录中。
-
.zip 路径 - .zip 文件的 HTTPS 或本地路径。
-
-
Amazon SAM CLI 会使用您的自定义模板初始化无服务器应用程序。
选择运行时系统
当您选择 Amazon 快速入门模板时,Amazon SAM CLI 会提示您为 Lambda 函数选择运行时系统。Amazon SAM CLI 列出的选项是本身受 Lambda 支持的运行时系统。
您可以将任何其他编程语言与自定义运行时配合使用。若要这样做,您需要手动创建应用程序起始结构。然后,您可以配置自定义模板位置,使用 sam init
来快速初始化应用程序。
根据您的选择,Amazon SAM CLI 会为 Lambda 函数代码和依赖项创建起始目录。
如果 Lambda 对于运行时支持多个依赖项管理器,则系统会提示您选择首选的依赖项管理器。
选择包类型
当您选择 Amazon 快速入门模板和运行时时,Amazon SAM CLI 会提示您选择包类型。包类型决定了如何部署 Lambda 函数以与 Lambda 服务配合使用。受支持的两种包类型是:
-
容器印象 – 包括基本操作系统、运行时系统、Lambda 扩展、应用程序代码及其依赖项。
-
.zip 文件归档 – 包括您的应用程序代码及其依赖项。
要了解有关部署包类型的更多信息,请参阅《Amazon Lambda 开发人员指南》中的 Lambda 部署包。
以下示例显示了将 Lambda 函数打包为容器映像的应用程序的目录结构。Amazon SAM CLI 下载映像,并在函数的目录中创建 Dockerfile
来指定映像。
sam-app ├── README.md ├── __init__.py ├── events │ └── event.json ├── hello_world │ ├── Dockerfile │ ├── __init__.py │ ├── app.py │ └── requirements.txt ├── samconfig.toml ├── template.yaml └── tests ├── __init__.py └── unit ├── __init__.py └── test_handler.py
以下示例显示了将函数打包为 .zip 文件存档的应用程序的目录结构。
sam-app ├── README.md ├── __init__.py ├── events │ └── event.json ├── hello_world │ ├── __init__.py │ ├── app.py │ └── requirements.txt ├── samconfig.toml ├── template.yaml └── tests ├── __init__.py ├── integration │ ├── __init__.py │ └── test_api_gateway.py ├── requirements.txt └── unit ├── __init__.py └── test_handler.py
配置 Amazon X-Ray 跟踪
您可以选择激活 Amazon X-Ray 跟踪。若要了解更多信息,请参阅《Amazon X-Ray 开发人员指南》中的什么是 Amazon X-Ray?。
如果激活此功能,Amazon SAM CLI 会配置 Amazon SAM 模板。以下是示例:
Globals: Function: ... Tracing: Active Api: TracingEnabled: True
使用 Amazon CloudWatch Application Insights 配置监控
您可以选择使用 Amazon CloudWatch Application Insights 激活监控。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的 Amazon CloudWatch Application Insights。
如果激活此功能,Amazon SAM CLI 会配置 Amazon SAM 模板。以下是示例:
Resources: ApplicationResourceGroup: Type: AWS::ResourceGroups::Group Properties: Name: Fn::Join: - '' - - ApplicationInsights-SAM- - Ref: AWS::StackName ResourceQuery: Type: CLOUDFORMATION_STACK_1_0 ApplicationInsightsMonitoring: Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName: Fn::Join: - '' - - ApplicationInsights-SAM- - Ref: AWS::StackName AutoConfigurationEnabled: 'true' DependsOn: ApplicationResourceGroup
命名您的应用程序
提供应用程序的名称。Amazon SAM CLI 会使用此名称为应用程序创建顶级文件夹。
sam init 的选项
以下是可与 sam init
命令配合使用的一些主要选项。有关全部选项的列表,请参阅 sam init。
使用自定义模板位置初始化应用程序
使用 --location
选项并提供受支持的自定义模板位置。以下是示例:
$
sam init --location
https://github.com/aws-samples/sessions-with-aws-sam/raw/master/starter-templates/web-app.zip
在不使用交互式流程的情况下初始化应用程序
使用 --no-interactive
选项并在命令行中提供您的配置选择,以跳过交互式流程。以下是示例:
$
sam init --no-interactive
--runtime go1.x --name go-demo --dependency-manager mod --app-template hello-world
故障排除
要对 Amazon SAM CLI 进行故障排除,请参阅 Amazon SAM CLI 故障排除。
示例
使用 Hello World Amazon 入门模板初始化新的无服务器应用程序
有关此示例的更多信息,请参阅教程:部署 Hello World 应用程序中的 第 1 步:初始化示例 Hello World 应用程序。
使用自定义模板位置初始化新的无服务器应用程序
以下几个示例说明了如何为自定义模板提供 GitHub 位置:
$
sam init --location
gh:aws-samples/cookiecutter-aws-sam-python
$
sam init --location
git+sh://git@github.com/aws-samples/cookiecutter-aws-sam-python.git
$
sam init --location
hg+ssh://hg@bitbucket.org/repo/template-name
以下是本地文件路径的示例:
$
sam init --location
/path/to/template.zip
以下是 HTTPS 可访问路径的示例:
$
sam init --location
https://github.com/aws-samples/sessions-with-aws-sam/raw/master/starter-templates/web-app.zip
了解更多
要了解有关使用 sam init
命令的更多信息,请参阅以下内容:
-
学习 Amazon SAM:sam init
- YouTube 上的 Serverless Land“学习 Amazon SAM”系列。 -
构建可与 Amazon SAM CLI 配合使用的无服务器应用程序(使用 SAM S2E7 的会话)
- YouTube 上的“使用 Amazon SAM 的会话”系列。
后续步骤
现在您已创建 Amazon SAM 项目,可以开始编写应用程序。有关执行此操作所需完成的任务的详细说明,请参阅使用 Amazon SAM 定义基础设施。