本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用发布无服务器应用程序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 的项目授予服务读取权限。要设置此策略,请执行以下操作:
通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/
。 -
选择您用于打包应用程序的 Amazon S3 存储桶的名称。
-
请选择权限。
-
在 Permissions(权限)标签页中,在 Bucket policy(存储桶策略)下,请选择 Edit(编辑)。
-
在存储库的编辑存储桶策略页面上,将以下策略声明粘贴到策略编辑器。在策略声明中,请确保在
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" } } } ] } -
选择 Save changes(保存更改)。
发布新应用程序
第 1 步:添加Metadata到部分Amazon SAM模板
首先,添加Metadata部分到你的Amazon SAM。模板。提供要发布的应用程序信息Amazon Serverless Application Repository.
以下是示例Metadata部分:
Metadata: AWS::ServerlessRepo::Application: Name:my-appDescription:hello worldAuthor:user1SpdxLicenseId: Apache-2.0 LicenseUrl:LICENSE.txtReadmeUrl:README.mdLabels:['tests']HomePageUrl:https://github.com/user1/my-app-projectSemanticVersion:0.0.1SourceCodeUrl:https://github.com/user1/my-app-projectResources: HelloWorldFunction: Type: AWS::Lambda::Function Properties: ... CodeUri:source-code1...
有关的更多信息Metadata的 部分Amazon SAM模板,请参阅Amazon SAM元数据部分属性.
第 2 步:Package 应用程序
运行以下命令Amazon SAMCLI 命令,该命令将应用程序的工件上传到 Amazon S3 并输出名为packaged.yaml:
sam package --output-template-file packaged.yaml --s3-bucket<your-bucket-name>
使用packaged.yaml将应用程序发布到Amazon Serverless Application Repository. (此文件类似于原始模板文件template.yaml),但它有一个关键的区别-CodeUri、LicenseUrl, 和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值。
例如,考虑使用名称发布的应用程序SampleApp和SemanticVersion的1.0.0. 要更新该应用程序,Amazon SAM模板必须有应用程序名称SampleApp和SemanticVersion的1.0.1(或者除了其他任何东西1.0.0)。