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

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

使用 sam init

Amazon Serverless Application Model 命令行界面 (Amazon SAM CLI) sam init 命令提供用于初始化新的无服务器应用程序的选项,由以下部分组成:

  • 用于定义基础设施代码的 Amazon SAM 模板。

  • 用于组织应用程序的文件夹结构。

  • Amazon Lambda 函数的配置。

有关 Amazon SAM CLI 的简介,请参阅 那是什么 Amazon SAMCLI?

有关 Amazon SAM CLI sam init 命令选项的列表,请参阅 sam init

初始化新的无服务器应用程序

使用 Amazon SAM CLI 初始化新的无服务器应用程序
  1. 指向起始目录的 cd

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

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

选择起始模板

模板由以下部分组成:

  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 支持的运行时系统。

  • 运行时提供在执行环境中运行的语言特定环境。

  • 部署到 Amazon Web Services 云 时,Lambda 服务在执行环境中调用您的函数。

您可以将任何其他编程语言与自定义运行时配合使用。若要这样做,您需要手动创建应用程序起始结构。然后,您可以配置自定义模板位置,使用 sam init 来快速初始化应用程序。

根据您的选择,Amazon SAM CLI 会为 Lambda 函数代码和依赖项创建起始目录。

如果 Lambda 对于运行时支持多个依赖项管理器,则系统会提示您选择首选的依赖项管理器。

选择包类型

当您选择 Amazon 快速入门模板运行时时,Amazon SAM CLI 会提示您选择包类型。包类型决定了如何部署 Lambda 函数以与 Lambda 服务配合使用。受支持的两种包类型是:

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

  2. .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 应用程序见解配置监控

您可以选择使用 Amazon App CloudWatch lication Insights 激活监控。要了解更多信息,请参阅《亚马逊 CloudWatch 用户指南》中的 “亚马逊 CloudWatch 应用程序见解”。

如果激活此功能,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 命令的更多信息,请参阅以下内容: