使用sam init命令创建您的应用程序 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用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 初始化新的无服务器应用程序
  1. 指向起始目录的 cd

  2. 在命令行中执行以下命令:

    $ sam init
  3. Amazon SAM CLI 会指导您完成交互式流程,以创建新的无服务器应用程序。

    注意

    如中所述教程:部署 Hello World 应用程序,此命令初始化您的无服务器应用程序,从而创建您的项目目录。此目录将包含多个文件和文件夹。最重要的文件是template.yaml。这是你的 Amazon SAM 模板。你的 python 版本必须与sam init命令创建template.yaml的文件中列出的 python 版本相匹配。

选择起始模板

模板由以下部分组成:

  1. 基础架构代码的 Amazon SAM 模板。

  2. 用于组织项目文件的项目起始目录。例如,这可能包括:

    1. Lambda 函数代码及其依赖项的结构。

    2. 包含用于本地测试的测试事件的 events 文件夹。

    3. 支持单元测试的 tests 文件夹。

    4. 用于配置项目设置的 samconfig.toml 文件。

    5. 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 快速入门模板
  1. 当系统提示时,选择 Amazon 快速入门模板

  2. 首先选择一个 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
选择自定义模板位置
  1. 当系统提示时,选择自定义模板位置

    Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
    Choice: 2
  2. Amazon SAM CLI 会提示您提供模板位置。

    Template location (git, mercurial, http(s), zip, path):

    为模板 .zip 文件存档提供以下任意位置:

    • GitHub 存储库 - .zip 文件在 GitHub 存储库中的路径。文件必须位于存储库的根目录中。

    • Mercurial 存储库 - .zip 文件在 Mercurial 存储库中的路径。文件必须位于存储库的根目录中。

    • .zip 路径 - .zip 文件的 HTTPS 或本地路径。

  3. 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 服务配合使用。受支持的两种包类型是:

  1. 容器印象 – 包括基本操作系统、运行时系统、Lambda 扩展、应用程序代码及其依赖项。

  2. .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 项目,就可以开始创作应用程序了。使用以下方式定义您的基础架构 Amazon SAM有关执行此操作需要完成的任务的详细说明,请参阅。