本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用sam init命令创建您的应用程序
完成入门和阅读后如何使用 Amazon Serverless Application Model (Amazon SAM),你就可以准备好在开发者环境中创建 Amazon SAM 项目了。您的 Amazon SAM 项目将作为编写无服务器应用程序的起点。有关 Amazon SAMCLIsam init
命令选项的列表,请参见sam init。
Amazon Serverless Application Model 命令行接口 (Amazon SAMCLI) sam init
命令提供了用于初始化新的无服务器应用程序的选项,该应用程序包括:
-
用于定义基础架构代码的 Amazon SAM 模板。
-
用于组织应用程序的文件夹结构。
-
为您的 Amazon Lambda 函数进行配置。
要创建 Amazon SAM 项目,请参阅本节中的主题。
初始化新的无服务器应用程序
使用 Amazon SAM CLI 初始化新的无服务器应用程序
-
指向起始目录的
cd
。 -
在命令行中执行以下命令:
$
sam init
-
Amazon SAM CLI 会指导您完成交互式流程,以创建新的无服务器应用程序。
注意
如中所述教程:部署 Hello World 应用程序,此命令初始化您的无服务器应用程序,从而创建您的项目目录。此目录将包含多个文件和文件夹。最重要的文件是
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 SAMCLI下载图像并在函数的目录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 SAMCLI会配置您的 Amazon SAM 模板。以下是 示例:
Globals: Function: ... Tracing: Active Api: TracingEnabled: True
使用 Amazon CloudWatch 应用程序见解配置监控
您可以选择使用 Amazon App CloudWatch lication Insights 激活监控。要了解更多信息,请参阅《亚马逊 CloudWatch 用户指南》中的 “亚马逊 CloudWatch 应用程序见解”。
如果您激活,则 Amazon SAMCLI会配置您的 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 SAMCLI,请参阅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
— Serverless Land “学习 Amazon SAM” 系列开启。YouTube -
构建可与 Amazon SAM CLI 配合使用的无服务器应用程序(使用 SAM S2E7 的会话)
- YouTube 上的“使用 Amazon SAM 的会话”系列。
后续步骤
既然您已经创建了 Amazon SAM 项目,就可以开始创作应用程序了。使用以下方式定义您的基础架构 Amazon SAM有关执行此操作需要完成的任务的详细说明,请参阅。