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

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

使用Amazon SAMCLI

要使您的Amazon SAM可供他人查找和部署的应用程序,您可以使用Amazon SAMCLI 将其发布到Amazon Serverless Application Repository. 要使用发布应用程序Amazon SAMCLI,您必须使用Amazon SAM。模板。你还必须在本地或在Amazon云。

请按照本主题中的说明创建新应用程序、创建现有应用程序的新版本或更新现有应用程序的元数据。(你做什么取决于应用程序是否已经存在于Amazon Serverless Application Repository,以及是否有任何应用程序元数据在更改。) 要详细了解应用程序元数据,请参阅Amazon SAM元数据部分属性.

先决条件

在将应用程序发布到之前Amazon Serverless Application Repository使用Amazon SAMCLI,您必须拥有以下内容:

  • 这些区域有:Amazon SAM安装 CLI。有关更多信息,请参阅 安装 Amazon SAM CLI。确定是否Amazon SAM安装 CLI,请运行以下命令:

    sam --version
  • 有效的Amazon SAM。模板。

  • 将应用程序代码和依赖项Amazon SAM模板引用。

  • 一个语义版本,只需要公开共享您的应用程序。该值可以像 1.0 一样简单。

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

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

  • 一个LICENSE.txt文件,仅需要公开共享您的应用程序。

  • 如果您的应用程序包含任何嵌套应用程序,则必须已将它们发布到Amazon Serverless Application Repository.

  • 一个有效的 Amazon Simple Storage Service (Amazon S3) 存储桶策略,它为在您打包应用程序时上传到 Amazon S3 的项目授予服务读取权限。要设置此策略,请执行以下操作:

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

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

    3. 选择权限

    4. Permissions(权限)标签页中,在 Bucket policy(存储桶策略)下,选择 Edit(编辑)。

    5. 在存储库的编辑存储桶策略在页面上,将以下策略声明粘贴到策略编辑器。在策略声明中,请确保在Resource和您的元素Amazon中的账户 IDCondition元素。中的表达式Condition元素可以确保Amazon Serverless Application Repository只能访问来自指定的应用程序Amazonaccount. 有关策略声明的更多信息,请参阅IAM JSON 策略元素参考中的IAM 用户指南.

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

发布新应用程序

第 1 步:添加Metadata部分到Amazon SAM模板

首先,添加Metadata部分到你的Amazon SAM。模板。提供要发布的应用程序信息Amazon 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的 部分Amazon SAM模板,请参阅Amazon SAM元数据部分属性.

第 2 步:打包应用程序

运行以下命令Amazon SAMCLI 命令,该命令将应用程序的工件上传到 Amazon S3 并输出名为packaged.yaml

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

使用packaged.yaml将应用程序发布到Amazon Serverless Application Repository. (此文件与原始模板文件类似(template.yaml),但它有一个关键的区别 —CodeUriLicenseUrl, 和ReadmeUrl属性指向 Amazon S3 存储桶和包含相应项目的对象。

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

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

第 3 步:发布应用程序

要发布私有版本Amazon SAM应用到Amazon Serverless Application Repository运行以下命令Amazon SAMCLI 命令:

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

的输出sam publish命令包括指向应用程序的链接Amazon Serverless Application Repository. 您也可以直接转到Amazon Serverless Application Repository登录页面然后搜索您的应用程序。

第 4 步:共享应用程序(可选)

默认情况下,您的应用程序设置为私有,因此其他应用程序不可见Amazon账户。要与其他人共享您的应用程序,您必须将其公开或向特定列表授予权限。Amazon账户。

有关使用共享应用程序的信息Amazon CLI,请参阅Amazon Serverless Application Repository基于资源的策略示例中的Amazon Serverless Application Repository开发人员指南. 有关使用共享应用程序的信息Amazon Web Services Management Console,请参阅共享应用程序中的Amazon Serverless Application Repository开发人员指南.

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

在将应用程序发布到Amazon Serverless Application Repository,您可能想要发布它的新版本。例如,您可能已经更改了 Lambda 函数代码或向应用程序架构添加了新组件。

要更新之前发布的应用程序,请使用之前详细介绍的相同流程再次发布该应用程序。在Metadata的 部分Amazon SAM模板文件,请提供与您最初发布该文件相同的应用程序名称,但包含一个新的SemanticVersion值。

例如,考虑使用名称发布的应用程序SampleAppSemanticVersion1.0.0. 要更新该应用程序,Amazon SAM模板必须有应用程序名称SampleAppSemanticVersion1.0.1(或者除了其他任何东西1.0.0)。

其他主题