使用发布无服务器应用程序 AWS SAM CLI(国际商业网) - AWS Serverless Application Model
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用发布无服务器应用程序 AWS SAM CLI(国际商业网)

您可以使用 AWS SAM CLI将应用程序发布到 AWS Serverless Application Repository 以使它可供他人查找和部署。

您要发布的应用程序必须是您已使用定义的应用程序 AWS SAM. 您还需要在本地和/或在AWSCloud中测试它。应用程序的部署包和 AWS SAM 模板是以下步骤步骤的输入。

以下说明可创建新应用程序、创建新版本的现有应用程序或更新现有应用程序的元数据。这取决于应用程序是否已存在于 AWS Serverless Application Repository,以及是否有应用程序元数据正在更改。有关用于发布应用程序的应用程序元数据的更多信息,请参阅 AWS SAM 模板元数据分节属性.

Prerequisites

在将应用程序发布到 AWS Serverless Application Repository 之前,您需要以下内容:

  • 有效的AWS帐户,其IAM用户具有管理员权限。请参阅设置 AWS 账户

  • 版本1.16.77或更高版本 AWS CLI 已安装。请参阅安装 AWS Command Line Interface。如果您有 AWS CLI 已安装,您可以通过运行以下命令来获取版本:

    aws --version
  • 的 AWS SAM CLI(命令行界面)已安装。请参阅安装 AWS SAM CLI。您可以确定 AWS SAM CLI通过运行以下命令来安装:

    sam --version
  • 有效 AWS 无服务器应用程序模型 (AWS SAM)模板。

  • 您的 申请 代码和依赖项 AWS SAM 模板。

  • 语义版本 您的申请(公开共享您的申请所必需的条件)。此值可以像1.0一样简单。

  • 指向应用程序源代码的URL。

  • 一个 README.md 文件。此文件应描述客户如何使用您的应用程序,以及如何在将其部署到自己的 AWS 账户之前对其进行配置。

  • LICENSE.txt 文件(公开共享应用程序所必需的文件)。

  • 一个有效的 Amazon S3 存储桶策略,它为在您打包应用程序时上传到 Amazon S3 的项目授予服务读取权限。为此,请遵循以下步骤:

    1. 通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

    2. 选择用于打包您的应用程序的 Amazon S3 存储桶。

    3. 选择 Permissions 选项卡。

    4. 选择存储桶策略按钮。

    5. 将以下策略语句粘贴到 Bucket policy editor (存储桶策略编辑器) 中。请确保在“资源”属性值中替换您的存储桶名称。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "serverlessrepo.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<your-bucket-name>/*" } ] }
    6. 选择保存按钮。

发布新应用程序

第1步: 添加元数据分节到 AWS SAM 模板

首先添加 Metadata 部分到您的 AWS SAM 模板. 提供要发布的申请信息至 AWS Serverless Application Repository.

以下是一个示例 Metadata 部分:

Metadata: AWS::ServerlessRepo::Application: Name: my-app Description: hello world Author: user1 SpdxLicenseId: Apache-2.0 LicenseUrl: LICENSE.txt ReadmeUrl: README.md Labels: ['tests'] HomePageUrl: https://github.com/user1/my-app-project SemanticVersion: 0.0.1 SourceCodeUrl: https://github.com/user1/my-app-project Resources: HelloWorldFunction: Type: AWS::Lambda::Function Properties: ... CodeUri: source-code1 ...

有关 Metadata 部分 AWS SAM 模板,请参阅 AWS SAM 模板元数据分节属性.

第2步: 打包应用程序

执行下列各项 AWS SAM CLI(国际商业网) 命令:

sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket <your-bucket-name>

命令将应用程序工件上传到 Amazon S3 并输出名为的新模板文件 packaged.yaml。下一步中,您将使用此文件将应用程序发布到 AWS Serverless Application Repository. 的 packaged.yaml 模板文件与原始模板文件类似(template.yaml),但有关键差异—是 CodeUri, LicenseUrl,和 ReadmeUrl 属性指向 Amazon S3 存储桶和包含相应工件的对象。

来自示例 packaged.yaml 模板文件的以下代码段显示了 CodeUri 属性:

MySampleFunction: Type: AWS::Serverless::Function Properties: CodeUri: s3://bucketname/fbd77a3647a4f47a352fcObjectGUID ...

第3步: 发布应用程序

执行下列各项 AWS SAM CLI(国际商业网) 命令:

sam publish \ --template packaged.yaml \ --region us-east-1

的输出 sam publish 命令包括指向 AWS Serverless Application Repository 直接发送至您的应用程序。您也可以前往 AWS Serverless Application Repository 并搜索您的应用程序。

您的 应用程序默认设置为私有,因此对其他AWS帐户不可见。为了与他人分享您的申请,您必须 公开 或 授予特定AWS帐户列表的权限. 有关使用共享应用程序的信息 AWS CLI,请参阅 将基于资源的策略用于 AWS Serverless Application Repository. 有关使用控制台共享应用程序的信息,请参阅 通过控制台共享应用程序.

发布现有应用程序的新版本

在您向 AWS Serverless Application Repository,您可能希望发布其新版本。例如,您可能已经更改了 Lambda 函数代码或将新组件添加到应用程序体系结构。

要更新之前发布的应用程序,请使用与上述相同的流程发布应用程序。您提供的应用程序名称与最初发布的应用程序名称相同,但 SemanticVersion 值。您还可提供应用程序名称和 SematicVersion 号码 AWS SAM 模板文件。

例如,如果您发布了一个名称为 SampleApp 和 SematicVersion 1.0.0,要更新该应用程序, AWS SAM 模板必须具有应用程序名称 SampleApp和 SematicVersion 可能是 1.0.1 (或者与 1.0.0)。

其他主题