本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中创建您的应用程序 AWS SAM
完成入门和阅读如何使用 AWS Serverless Application Model (AWS SAM)后,您就可以准备好在开发人员环境中创建 AWS SAM 项目了。您的 AWS SAM 项目将作为编写无服务器应用程序的起点。有关清单 AWS SAM CLI sam init
命令选项,请参阅sam init。
AWS Serverless Application Model 命令行界面 (AWS SAM CLI) sam init
命令提供了用于初始化新的无服务器应用程序的选项,该应用程序包括:
-
用于定义基础架构代码的 AWS SAM 模板。
-
用于组织应用程序的文件夹结构。
-
为您的 AWS Lambda 函数进行配置。
要创建 AWS SAM 项目,请参阅本节中的主题。
初始化新的无服务器应用程序
要初始化新的无服务器应用程序,请使用 AWS SAM CLI
-
指向起始目录的
cd
。 -
在命令行中执行以下命令:
$
sam init
-
的 AWS SAM CLI 将引导您完成交互式流程,以创建新的无服务器应用程序。
注意
如教程:使用部署 Hello World 应用程序 AWS SAM中所述,此命令会初始化您的无服务器应用程序,从而创建您的项目目录。此目录将包含多个文件和文件夹。最重要的文件是
template.yaml
。这是你的 AWS SAM 模板。您的 python 版本必须与 sam init 命令创建的template.yaml
文件中列出的 python 版本匹配。
选择起始模板
模板由以下部分组成:
-
基础架构代码的 AWS 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
-
您可以从可用的 AWS 快速入门模板列表中进行选择,也可以自行提供自定义模板位置。
选择 AWS 快速入门模板
-
当系统提示时,选择 AWS 快速入门模板。
-
首先选择一个 AWS 快速入门模板。以下是示例:
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
-
的 AWS SAM CLI 将提示您提供模板位置。
Template location (git, mercurial, http(s), zip, path):
为模板 .zip 文件存档提供以下任意位置:
-
GitHub 存储库 -您的.zip 文件的路径 GitHub 存储库。文件必须位于存储库的根目录中。
-
Mercurial 存储库 -您的.zip 文件的路径 Mercurial 存储库。文件必须位于存储库的根目录中。
-
.zip 路径 - .zip 文件的 HTTPS 或本地路径。
-
-
的 AWS SAM CLI 将使用您的自定义模板初始化您的无服务器应用程序。
选择运行时系统
选择AWS 快速入门模板时, AWS SAM CLI 提示您为 Lambda 函数选择运行时。显示的选项列表 AWS SAM CLI 是 Lambda 原生支持的运行时。
-
运行时提供在执行环境中运行的语言特定环境。
您可以将任何其他编程语言与自定义运行时配合使用。若要这样做,您需要手动创建应用程序起始结构。然后,您可以配置自定义模板位置,使用 sam init
来快速初始化应用程序。
根据您的选择, AWS SAM CLI 为您的 Lambda 函数代码和依赖项创建起始目录。
如果 Lambda 对于运行时支持多个依赖项管理器,则系统会提示您选择首选的依赖项管理器。
选择包类型
选择AWS 快速入门模板和运行时时, AWS SAM CLI 会提示您选择包裹类型。包类型决定了如何部署 Lambda 函数以与 Lambda 服务配合使用。受支持的两种包类型是:
-
容器印象 – 包括基本操作系统、运行时系统、Lambda 扩展、应用程序代码及其依赖项。
-
.zip 文件归档 – 包括您的应用程序代码及其依赖项。
要了解有关部署包类型的更多信息,请参阅《AWS Lambda 开发人员指南》中的 Lambda 部署包。
以下示例显示了将 Lambda 函数打包为容器映像的应用程序的目录结构。的 AWS 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
配置 AWS X-Ray 跟踪
您可以选择激活跟 AWS X-Ray 踪。要了解更多信息,请参阅什么是 AWS X-Ray? 在《AWS X-Ray 开发人员指南》中。
如果你激活, AWS SAM CLI 配置您的 AWS SAM 模板。以下是示例:
Globals: Function: ... Tracing: Active Api: TracingEnabled: True
使用 Amazon CloudWatch 应用程序见解配置监控
您可以选择使用 Amazon App CloudWatch lication Insights 激活监控。要了解更多信息,请参阅《亚马逊 CloudWatch 用户指南》中的 “亚马逊 CloudWatch 应用程序见解”。
如果你激活, AWS SAM CLI 配置您的 AWS 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
命名您的应用程序
提供应用程序的名称。的 AWS 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
故障排除
要排除故障 AWS SAM CLI,请参阅 AWS SAM CLI 故障排除。
示例
使用 Hello World AWS 入门模板初始化新的无服务器应用程序
有关此示例的更多信息,请参阅教程:部署 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
命令的更多信息,请参阅以下内容:
-
学习 AWS SAM:sam init —
Serverless Land “学习 AWS SAM” 系列开启 YouTube. -
构造用于的无服务器应用程序 AWS SAM CLI (与 SAM S2E7 的会话)
— 开启系列的会议 AWS SAM YouTube.
后续步骤
既然您已经创建了 AWS SAM 项目,就可以开始创作应用程序了。有关执行此操作所需完成的任务的详细说明,请参阅使用以下方式定义您的基础架构 AWS SAM。