如何发布应用程序 - AWS Serverless Application Repository
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如何发布应用程序

本节为您提供使用 AWS SAM CLI 或 AWS 管理控制台将无服务器应用程序发布到 AWS Serverless Application Repository 的过程。它还向您展示如何共享您的应用程序以允许其他人部署它,以及从 AWS Serverless Application Repository 中删除您的应用程序。

重要

您在发布应用程序时输入的信息未加密。此信息包括作者姓名等数据。如果您有不希望存储或公开的个人身份信息,我们建议您不要在发布应用程序时输入此类信息。

发布应用程序 (AWS CLI)

将应用程序发布到 AWS Serverless Application Repository 的最简单方法是使用一组 AWS SAM CLI 命令。有关更多信息,请参阅 AWS 无服务器应用程序模型 (AWS SAM) 开发人员指南 中的使用 AWS SAM CLI 发布应用程序

发布新应用程序(控制台)

本部分介绍如何使用 AWS 管理控制台将新应用程序发布到 AWS Serverless Application Repository。有关发布现有应用程序的新版本的说明,请参阅发布现有应用程序的新版本

先决条件

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

  • 有效的 AWS 账户。

  • 定义所用 AWS 资源的有效 AWS 无服务器应用程序模型 (AWS SAM) 模板。有关 AWS SAM 模板的更多信息,请参阅 AWS SAM 模板基础知识

  • 使用 AWS CLI 的 AWS CloudFormation package 命令创建的应用程序的程序包。此命令打包您的 AWS SAM 模板引用的本地项目 (本地路径)。有关详细信息,请参阅 AWS CloudFormation 文档中的程序包

  • 指向应用程序源代码的 URL(如果您需要公开发布应用程序)。

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

  • 来自 SPDX 网站的 license.txt 文件或有效的许可证标识符。请注意,只有当您想要公开共享您的应用程序时,才需要许可证。如果您要将应用程序保持为私有或仅私下共享,则无需指定许可证。

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

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

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

    3. 选择 Permissions 选项卡。

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

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

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

程序

使用以下过程在 AWS Serverless Application Repository 中创建新的应用程序。

在 AWS Serverless Application Repository 中创建新应用程序

  1. 打开 AWS Serverless Application Repository 控制台并选择 Publish applications (发布应用程序)

  2. Publish an application (发布应用程序) 页面上,输入以下应用程序信息,然后选择 Publish application (发布应用程序)

    属性 是否必需 描述
    应用程序名称 TRUE

    应用程序名称。

    最小长度 = 1。最大长度 = 140。

    模式:"[a-zA-Z0-9\\-]+";

    作者 TRUE

    发布应用程序的作者的姓名。

    最小长度 = 1。最大长度 = 127。

    模式:"^[a-z0-9](([a-z0-9]|-(?!-))*[a-z0-9])?$";

    主页 FALSE 一个 URL,其中包含有关应用程序的更多信息 — 例如,应用程序的 GitHub 存储库的位置。
    说明 TRUE

    关于应用程序的描述。

    最小长度 = 1。最大长度 = 256。

    标签 FALSE

    改善在搜索中发现应用程序的结果的标签。

    最小长度 = 1。最大长度 = 127。最大标签数量:10。

    模式:"^[a-zA-Z0-9+\\-_:\\/@]+$";

    Spdx 许可证(下拉列表) FALSE 从下拉列表中选择包含 SPDX 网站上可用的许可证的有效许可证标识符。在下拉列表中选择一个项目将填充其下方的 License (许可证) 文本框。注意:在下拉列表中选择许可证将替换 License (许可证) 文本框中的内容,并放弃您所做的任何手动编辑。
    许可证 FALSE

    上传 .txt 许可证文件,或从上一行中描述的 Spdx license (Spdx 许可证) 下拉菜单中选择一个许可证。从 Spdx license (Spdx 许可证) 下拉列表中选择许可证会自动填充 License (许可证) 文本框。上传许可证文件或从 Spdx license (Spdx 许可证) 下拉菜单中选择一个许可证文件后,您可以手动编辑此文本框的内容。但是,如果从下拉列表中选择了另一个 Spdx license (Spdx 许可证) ,则会丢弃您所做的任何手动编辑。

    这是一个可选字段,但您必须提供许可证才能公开共享应用程序。

    Readme (自述文件) FALSE

    上传自述文件的内容,该文件可以是文本或记录格式。这些内容显示在 AWS Serverless Application Repository 中应用程序的详细信息页面上。上传文件后,您可以手动编辑此文本框的内容。

    Semantic version FALSE

    应用程序的语义版本。有关更多信息,请参阅语义版本控制网站

    您必须为此属性提供一个值,才能使您的应用程序变为公有的。

    Source code Url (源代码 Url) FALSE 指向应用程序源代码的公共存储库的链接。
    SAM template (SAM 模板) TRUE

    定义所用 AWS 资源的有效 AWS 无服务器应用程序模型 (AWS SAM) 模板。

共享应用程序

已发布的应用程序可能已设置以下三个类别之一的权限:

  • 私有(默认) – 使用同一账户创建但尚未与任何其他 AWS 账户共享的应用程序。只有共享您的 AWS 账户的使用者才拥有部署私有应用程序的权限。

  • 私下共享 – 发布者已明确与特定的一组 AWS 账户或与 AWS 组织中的 AWS 账户共享的应用程序。使用者有权部署已与其 AWS 账户或 AWS 组织共享的应用程序。有关 AWS Organizations 的更多信息,请参阅 AWS Organizations 用户指南

  • 公开共享 – 发布者已与所有人共享的应用程序。所有使用者都有权部署任何公开共享的应用程序。

将应用程序发布到 AWS Serverless Application Repository 后,默认情况下,应用程序将设置为私有。本节介绍如何与特定 AWS 账户或 AWS 组织私下共享应用程序,或与所有人公开共享应用程序。

通过控制台共享应用程序

您有两种选择与其他人共享您的应用程序:1) 与特定 AWS 账户或 AWS 组织内的 AWS 账户共享应用程序,或 2) 与所有人公开共享应用程序。有关 AWS Organizations 的更多信息,请参阅 AWS Organizations 用户指南

选项 1:与特定 AWS 账户或 AWS 组织内的账户共享您的应用程序

  1. 打开 AWS Serverless Application Repository 控制台

  2. 在导航窗格上,选择 Published Applications (已发布的应用程序),以显示您已创建的应用程序的列表。

  3. 选择要共享的应用程序。

  4. 选择 Sharing (共享) 选项卡。

  5. Application policy statements (应用程序策略语句) 部分中,选择 Create Statement (创建语句) 按钮。

  6. Statement Configuration (语句配置) 窗口中,根据您希望共享应用程序的方式填写各个字段。

    注意

    如果您与某个组织共享,则只能指定您的 AWS 账户所属的组织。如果您尝试指定您不是其成员的 AWS 组织,则会导致错误。

    要与 AWS 组织共享您的应用程序,您必须确认 UnshareApplication 操作将添加到您的策略语句中,以防将来需要撤销共享。

  7. 选择保存按钮。

选项 2:与所有人公开共享您的应用程序

  1. 打开 AWS Serverless Application Repository 控制台

  2. 在导航窗格上,选择 Published Applications (已发布的应用程序),以显示您已创建的应用程序的列表。

  3. 选择要共享的应用程序。

  4. 选择 Sharing (共享) 选项卡。

  5. Public Sharing (公开共享) 部分,选择 Edit (编辑) 按钮。

  6. Public sharing (公开共享) 下,选择 Enabled (已启用) 单选按钮。

  7. 在文本框中键入应用程序的名称,然后选择 Save (保存) 按钮。

注意

要公开共享应用程序,它必须同时设置了 SemanticVersionLicenseUrl 属性。

通过 AWS CLI 共享应用程序

要使用 AWS CLI 来共享应用程序,请使用 put-application-policy 命令以指定要作为委托人共享的 AWS 账户来授予权限。

有关使用 AWS CLI 共享应用程序的更多信息,请参阅 AWS Serverless Application Repository 基于资源的策略示例

取消共享应用程序

取消与 AWS 组织共享应用程序有两种选择:

  1. 应用程序的发布者可以使用 put-application-policy 命令删除权限。

  2. AWS 组织的主账户 中的用户可以对与该组织共享的任何应用程序执行取消共享应用程序操作,即使该应用程序是由其他账户中的用户发布的也是如此。

    注意

    如果通过“取消共享应用程序”操作取消与 AWS 组织共享某个应用程序,则无法再次与该 AWS 组织共享该应用程序。

    有关 AWS Organizations 的更多信息,请参阅 AWS Organizations 用户指南

发布者删除权限

发布者通过控制台删除权限

要通过 AWS 管理控制台 取消共享应用程序,请删除与其他 AWS 账户共享该应用程序的策略语句。为此,请按照以下步骤操作:

  1. 打开 AWS Serverless Application Repository 控制台

  2. 在左侧导航窗格中,选择 Available Applications (可用的应用程序)

  3. 选择要取消共享的应用程序。

  4. 选择 Sharing (共享) 选项卡。

  5. Application policy statements (应用程序策略语句) 部分中,选择与要取消共享的账户共享应用程序的策略语句。

  6. 选择 Delete

  7. 此时会显示确认消息。再次选择删除

发布者通过 AWS CLI 删除权限

要通过 AWS CLI 取消共享应用程序,发布者可以使用 put-application-policy 命令删除或更改权限,以使该应用程序成为私有,或与不同的一组 AWS 账户共享。

有关使用 AWS CLI 更改权限的更多信息,请参阅 AWS Serverless Application Repository 基于资源的策略示例

主账户取消共享应用程序

主账户通过控制台取消与 AWS 组织共享应用程序

要通过 AWS 管理控制台取消与 AWS 组织共享应用程序,主账户 中的用户可以执行以下操作:

  1. 打开 AWS Serverless Application Repository 控制台

  2. 在左侧导航窗格中,选择 Available Applications (可用的应用程序)

  3. 在应用程序的磁贴中,选择 Unshare (取消共享)

  4. 在取消共享消息框中,通过输入组织 ID 和应用程序名称,然后选择 Save (保存),以确认您要取消共享应用程序。

主账户通过 AWS CLI 从 AWS 组织取消共享应用程序

要取消与 AWS 组织共享应用程序,主账户 中的用户可以运行 aws serverlessrepo unshare-application 命令。

以下命令取消与 AWS 组织共享应用程序,其中 application-id 是应用程序的 Amazon 资源名称 (ARN),而 organization-id 是 AWS 组织 ID:

aws serverlessrepo unshare-application --application-id application-id --organization-id organization-id

删除应用程序

您可以使用 AWS 管理控制台或 AWS SAM CLI 从 AWS Serverless Application Repository 中删除应用程序。

删除应用程序(控制台)

要通过 AWS 管理控制台删除已发布的应用程序,请执行以下操作。

  1. 打开 AWS Serverless Application Repository 控制台

  2. 对于 My Applications (我的应用程序),请选择要删除的应用程序。

  3. 在应用程序的详细信息页面中,选择 Delete application (删除应用程序)

  4. 选择 Delete application (删除应用程序) 来完成删除。

删除应用程序 (AWS CLI)

要使用 AWS CLI 删除已发布的应用程序,请运行 aws serverlessrepo delete-application 命令。

以下命令删除应用程序,其中 application-id 是应用程序的 Amazon 资源名称 (ARN):

aws serverlessrepo delete-application --application-id application-id