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

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

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

  2. 在命令行运行以下命令:

    $ sam init
  3. CAmazon SAM LI 将引导您完成交互式流程,创建新的无服务器应用程序。

选择一个起始模板

模板由以下内容组成:

  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. CAmazon SAM LI 将提示您提供模板位置。

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

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

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

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

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

  3. CAmazon SAM LI 将使用您的自定义模板初始化您的无服务器应用程序。

选择运行时

当您选择Amazon快速启动模板时,Amazon SAMCLI 会提示您为 Lambda 函数选择运行时。Amazon SAMCLI 显示的选项列表是 Lambda 原生支持的运行时。

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

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

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

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

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

选择包裹类型

当您选择Amazon快速启动模板运行时,Amazon SAMCLI 会提示您选择包类型。包类型决定如何部署您的 Lambda 函数以与 Lambda 服务一起使用。支持的两种包类型是:

  1. 容器映像 — 包含基本操作系统、运行时、Lambda 扩展、应用程序代码及其依赖项。

  2. .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 --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 SAMCLI 纠正

示例

使用 Hello WorldAmazon Starter 模板初始化一个新的无服务器应用程序

有关此示例,请参阅 步骤 1:初始化示例 Hello World 应用程序教程:部署 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命令的更多信息,请参阅以下内容: