在中创建您的应用程序 AWS SAM - AWS Serverless Application Model

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

在中创建您的应用程序 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
  1. 指向起始目录的 cd

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

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

    注意

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

选择起始模板

模板由以下部分组成:

  1. 基础架构代码的 AWS 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

您可以从可用的 AWS 快速入门模板列表中进行选择,也可以自行提供自定义模板位置

选择 AWS 快速入门模板
  1. 当系统提示时,选择 AWS 快速入门模板

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

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

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

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

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

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

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

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

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

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