本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 sam init
Amazon Serverless Application Model命令行接口 (Amazon SAMCLI)sam init 命令提供初始化新的无服务器应用程序的选项,该应用程序包括:
-
用于定义基础设施代码的Amazon SAM模板。
-
用于组织应用程序的文件夹结构。
-
为您的Amazon Lambda功能进行配置。
有关Amazon SAM CLI 的简介,请参阅什么是Amazon SAM CLI?。
有关Amazon SAM CLIsam init 命令选项的列表,请参阅sam init。
初始化一个新的无服务器应用程序
使用Amazon SAM CLI 初始化新的无服务器应用程序
-
cd到起始目录。 -
在命令行运行以下命令:
$sam init -
CAmazon SAM LI 将引导您完成交互式流程,创建新的无服务器应用程序。
选择一个起始模板
模板由以下内容组成:
-
基础设施代码的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:1Choose 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 -
CAmazon SAM LI 将提示您提供模板位置。
Template location (git, mercurial, http(s), zip, path):
为您的模板.zip 文件存档提供以下任意位置:
-
GitHub存储库-存储库中.zip 文件的路径。GitHub该文件必须位于存储库的根目录中。
-
Mercurial存储库-存储库中.zip 文件的路径。Mercurial该文件必须位于存储库的根目录中。
-
.zip 路径 — 您的.zip 文件的 HTTPS 或本地路径。
-
-
CAmazon SAM LI 将使用您的自定义模板初始化您的无服务器应用程序。
选择运行时
当您选择Amazon快速启动模板时,Amazon SAMCLI 会提示您为 Lambda 函数选择运行时。Amazon SAMCLI 显示的选项列表是 Lambda 原生支持的运行时。
您可以在自定义运行时中使用任何其他编程语言。为此,您需要手动创建起始应用程序结构。然后,您可以使用配置自定义模板位置sam init来快速初始化应用程序。
根据您的选择,Amazon SAMCLI 为您的 Lambda 函数代码和依赖项创建起始目录。
如果 Lambda 在您的运行时支持多个依赖项管理器,则系统将提示您选择首选的依赖项管理器。
选择包裹类型
当您选择Amazon快速启动模板和运行时,Amazon SAMCLI 会提示您选择包类型。包类型决定如何部署您的 Lambda 函数以与 Lambda 服务一起使用。支持的两种包类型是:
-
容器映像 — 包含基本操作系统、运行时、Lambda 扩展、应用程序代码及其依赖项。
-
.zip 文件存档-包含您的应用程序代码及其依赖项。
要了解有关部署包类型的更多信息,请参阅Amazon Lambda开发人员指南中的 Lambda 部署包。
以下是将 Lambda 函数打包为容器镜像的应用程序的示例目录结构。CAmazon SAM LI 下载图像并在函数的目录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
使用 “亚马逊 CloudWatch 应用程序洞察” 配置监控
您可以选择使用亚马逊 CloudWatch 应用程序洞察激活监控。要了解更多信息,请参阅《亚马逊 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
命名您的应用程序
为您的应用程序提供名称。CAmazon SAM LI 使用此名称为您的应用程序创建顶级文件夹。
sam init 的选项
以下是您可以在该sam init命令中使用的一些主要选项。有关所有选项的列表,请参阅sam init。
使用自定义模板位置初始化应用程序
使用--location选项并提供支持的自定义模板位置。以下是示例:
$sam init --locationhttps://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 SAMCLI 纠正。
示例
使用 Hello WorldAmazon Starter 模板初始化一个新的无服务器应用程序
有关此示例,请参阅 步骤 1:初始化示例 Hello World 应用程序教程:部署 Hello World 应用程序。
使用自定义模板位置初始化新的无服务器应用程序
以下是为您的自定义模板提供GitHub位置的示例:
$sam init --locationgh:aws-samples/cookiecutter-aws-sam-python$sam init --locationgit+sh://git@github.com/aws-samples/cookiecutter-aws-sam-python.git$sam init --locationhg+ssh://hg@bitbucket.org/repo/template-name
以下是本地文件路径的示例:
$sam init --location/path/to/template.zip
以下是 HTTPS 可访问的路径示例:
$sam init --locationhttps://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 的会话)
—Amazon SAM 系列开启的会话YouTube。