Serverless Application Repository 常见问题和条款

一般性问题

无服务器应用程序无需预置、部署或管理服务器或其他基础设施。它们具有内置高可用性,并且可以连续自动扩展。您可以使用一种完全托管的 AWS 产品来构建和运行无服务器应用程序,包括用于计算的 AWS Lambda、用于 API 的 Amazon API Gateway 和用于数据库的 Amazon DynamoDB。

AWS Serverless Application Repository 将 AWS 和其他 AWS 合作伙伴及开发人员发布的越来越多的无服务器应用程序集合在一起。借助无服务器应用程序存储库,您可以轻松地为 Web 和移动后端、流式处理以及机器学习等常见使用案例部署应用程序,以便快速开始使用 AWS 无服务器平台。

该服务目前已在下列地区推出:美国东部 (俄亥俄)、美国东部 (弗吉尼亚北部)、美国西部 (加利福尼亚北部)、美国西部 (俄勒冈)、亚太地区 (东京)、亚太地区 (首尔)、亚太地区 (孟买)、亚太地区 (新加坡)、亚太地区 (悉尼)、加拿大 (中部)、欧洲 (法兰克福)、欧洲 (爱尔兰)、欧洲 (伦敦) 和南美洲 (圣保罗)。

AWS Serverless Application Repository 包括用于 Alexa 技能、聊天机器人、数据处理、物联网、实时流处理、Web 和移动后端、社交媒体趋势分析、镜像大小调整的应用程序以及 AWS 上的发布者提供的其他应用程序。

在 AWS Serverless Application Repository 中浏览应用程序、部署应用程序或发布应用程序不收取任何费用。标准 AWS 费用适用于您部署的应用程序所使用的资源。

AWS 提供的应用程序均提供 MIT 开源许可证,而其他方公开提供的应用程序可能提供经由开放源代码促进会 (OSI) 批准的一个或多个开源许可证。您可以通过导航到 AWS 网站上某个应用程序的许可选项卡,查看关于许可的详细信息。

AWS 发布的所有应用程序都需要经过许可证遵从性和代码质量审查。对于第三方发布的应用程序,需要验证它们是否正确使用权限,以确保使用者了解应用程序可以修改或访问哪些资源。在使用某个应用程序之前,您可以查看上述详细信息以及 AWS 客户部署该应用程序的次数。

符合。开发人员可以使用 AWS Serverless Application Repository 发布在 GitHub 存储库中开发的无服务器应用程序。使用 AWS CodePipeline 将 GitHub 源与 AWS Serverless Application Repository 关联,可以使发布流程更简单,并在几分钟完成流程设置。

部署应用程序

无服务器应用程序作为 AWS CloudFormation 堆栈进行部署,这让您可以将应用程序作为一个单元进行轻松管理。每个资源都标记有应用程序的唯一可识别的 Amazon 资源名称 (ARN),这将有助于您使用 AWS 标签编辑控制台查找资源。您还可以使用现有的 AWS 和第三方工具来单独管理每个资源。

发布应用程序

要发布无服务器应用程序,请先使用 AWS Serverless Application Model (SAM) 格式描述应用程序,再使用 AWS CLI 打包应用程序,最后使用 AWS 管理控制台、AWS CLI 或 AWS 软件开发工具包发布应用程序。您必须拥有有效的 AWS 账户,还需要提供应用程序的名称、描述、源代码链接和 LICENSE.txt。旨在提供给任何 AWS 客户的应用程序必须在美国东部 (弗吉尼亚北部) 或美国东部 (俄亥俄) 地区发布。

发布者可以控制哪些人能够查找和部署其在 Repository 中发布的应用程序。您可以限制对团队(同一 AWS 账户下的组)的访问、与其他账户共享应用程序或向任何 AWS 客户公开提供应用程序。要详细了解您发布的应用程序的权限和可见性,请查看《基于资源的策略》文档

如果想收取无服务器应用程序的使用费用,您可以将 AWS Lambda 集成到 Amazon API Gateway 后端,然后通过 AWS Marketplace 将 API 作为 SaaS 产品出售。要了解更多信息,请查看在 AWS Marketplace 上发布产品以及如何使用 API Gateway 出售 API中罗列的步骤。

使用嵌套应用程序

嵌套无服务器应用程序是一种组件,可作为其他无服务器应用程序的一部分进行部署。随着无服务器架构l扩展,一些通用模式也随之出现,这些模式在多个应用程序模板中定义相同的组件。您现在可以将通用模式分离为专用应用程序,然后将它们嵌套为新的或现有应用程序模板的一部分。

嵌套应用程序作为 AWS CloudFormation 嵌套堆栈进行部署。

使用 AWS:Serverless:Application 资源类型添加您已经在本地开发或已通过 Serverless Application Repository 与您共享的应用程序。您可以使用简单的 AWS SAM 语法为嵌套应用程序或参考输出定义输入。有关更多详细信息,请参阅我们的文档

为 SAM 模板中的每个嵌套应用程序指定唯一名称。嵌套应用程序创建的资源将限定为应用程序的唯一名称。

使用 SAM CLI sam package 命令打包您的嵌套应用程序。使用 API 或 AWS 软件开发工具包将打包的应用程序发布到 Serverless Application Repository。您可以使用 SAM CLI sam deploy 命令立即部署应用程序。

符合。SAM CLI sam package 命令将递归打包嵌套应用程序的层次结构。您可以在一个顶级应用程序模板中嵌套最多 199 个应用程序。

使用嵌套应用程序

无服务器应用程序作为 AWS CloudFormation 堆栈进行部署,这让您可以将应用程序作为一个单元进行轻松管理。每个资源都标记有应用程序的唯一可识别的 Amazon 资源名称 (ARN),这将有助于您使用 AWS 标签编辑控制台查找资源。您还可以使用现有的 AWS 和第三方工具来单独管理每个资源。

使用应用程序 ARN 和应用程序所需的任何必要输入参数配置 AWS:Serverless:Application SAM 资源。有关更多详细信息,请参阅我们的文档

Serverless Application Repository 中的嵌套应用程序已经打包,可供您随时使用。在将嵌套应用程序部署到您的账户之前,您可以使用现有的 SAM CLI sam package 命令来确保该应用程序仍可供使用。

如果您嵌套的应用程序被删除或您不再具有对该应用程序的访问权限,这不会影响对应用程序的现有部署。如果您尝试使用不再存在的依赖项部署应用程序,则需要更新该应用程序。

包含一个或多个嵌套应用程序的应用程序会使用 CAPABILITY_AUTO_EXPAND。

发布嵌套应用程序

符合。您可以将嵌套应用程序发布到 Serverless Application Repository,就像现在发布独立应用程序一样。使用 AWS 控制台、AWS CLI、SAM CLI 或 Serverless Application Repository API 发布嵌套应用程序。

共享嵌套应用程序

无服务器应用程序遵循 Lambda 函数目前使用的相同模型。可以使用基于 AWS IAM 资源的策略来控制对 Serverless Application Repository 中无服务器应用程序的访问。您可以使用策略将应用程序保密、授予跨账户访问权限或使其公开。

如果存在嵌套应用程序层次结构,每个嵌套应用程序必须可供与您共享顶级应用程序的 AWS 账户使用。

共享应用程序

符合。您现在可以与属于 AWS 组织的所有账户共享应用程序。无服务器应用程序遵循 Lambda 函数目前使用的相同模型。可以使用基于 AWS IAM 资源的策略来控制对 AWS Serverless Application Repository 中无服务器应用程序的访问。您可以使用策略将应用程序保密、授予跨账户访问权限、授予组织访问权限或使其公开。要详细了解适用于无服务器应用程序的基于资源的策略,请参阅此处

首先,在 AWS Serverless Application Repository 控制台中找到所需应用程序,单击“共享”选项卡,然后单击“创建语句”。在这里,您可以添加 AWS 组织主体,以便授予组织对该应用程序的访问权限。您还可以使用 AWS Serverless Application Repository API 来更新基于资源的策略,以便跨组织共享应用程序。有关基于资源的策略的更多详细信息,请参阅此处的文档。

不可以。您只能与属于您的账户所在 AWS 组织的账户共享应用程序。

不支持在组织单位内共享应用程序。您可以使用策略将应用程序保密、授予跨账户访问权限、授予组织访问权限或使其公开。

要为组织中的特定账户提供对您的应用程序的访问权限,只需更新基于资源的策略,以添加 AWS 账户以及您希望与之共享应用程序的 AWS 组织 ID。

符合。您可以对基于资源的策略设置操作,以便限制某人可以对您共享的应用程序执行的操作类型。支持通过 AWS Serverless Application Repository API 和控制台更新基于资源的策略的操作。有关您可以为基于资源的策略设置的操作的更多详细信息,请参阅此处的文档。

用户条款

1.作为 AWS 客户的发布者可以提交其 AWS 无服务器应用程序和组件(下文简称“AWS Serverless Application”),将这些应用程序通过 AWS Serverless Application Repository(下文简称“Repository”)向特定 AWS 账户私下提供或向根据 Repository 控制台发布流程使用 Repository 的所有 AWS 客户公开提供。AWS Serverless Application 可以私下提供,也可以采用二进制或源代码形式向特定 AWS 账户提供;向所有 AWS 客户提供的 AWS Serverless Application 可以采用二进制或源代码形式,并且必须包含足够的详细信息以使用户能够访问源代码。

2.发布者必须拥有所有许可证和必要的权限或权利才可将其 AWS Serverless Application 提交到 Repository。发布者将 AWS Serverless Application 提交到 Repository 时,必须同时提交 AWS Serverless Application 的许可证条款,其中包括任何开源许可证的归属要求。在将任何 AWS Serverless Application 提交到 Repository 之前,发布者负责对其进行审查、评估和测试。

3.发布者特此授予 AWS 及其附属公司复制、分销、公开展示或在特定 AWS 账户(如适用)内展示、执行、传输、使用 Repository 中的 AWS Serverless Application 以及通过数字化方式(通过在线和电子分销等各种方式)提供 AWS Serverless Application 的权利。

4.发布者声明并保证其完全有权将 AWS Serverless Application 提交到 Repository,并且完全有权从 Repository 中下载 AWS Serverless Application,且已提供所有必要归属。发布者不会提交带有恶意程序、恶意内容或其他有害内容的 AWS Serverless Application,以蓄意伤害他人。AWS 可以根据此原因或其他原因自行决定是否删除和下架任何 AWS Serverless Application。

5.对于所下载的任何 AWS Serverless Application,AWS 客户都需要遵循许可条款(包括任何归属要求或其他要求)。

6.任何 AWS 客户在创建任何 AWS Serverless Application 的衍生产品时均需负责确定其是否拥有 AWS Serverless Application 许可规定的相应权利,以及必须遵守哪些归属要求或其他要求。

7.任何发布者的 AWS Serverless Application 许可证或其他协议都只存在于发布者和 AWS 客户之间。AWS 及其任何附属公司均不是该许可证或其他协议的当事方,因此不承担该许可证或其他协议所规定的任何责任或义务。AWS 不负责也没有责任确保发布者或 AWS 客户遵守许可条款 (包括归属要求) 或其他要求。

8.AWS Serverless Application 和 Repository 中提供的任何其他第三方资料均属于“Repository 内容”。 “Repository 内容”按“原样”提供,不给予任何明示或暗示的保证,包括但不限于对商品适销性、特定用途的适用性和非侵权性的保证。在任何情况下,发布者、版权持有人、AWS 或其附属公司均不对履约行为、侵权行为,以及与 Repository 内容相关的或在使用或交易 Repository 内容时产生的任何索赔、损害或其他责任负责。

9.发布者和 AWS 客户承诺在使用 Repository 时遵守以上所有条款;AWS 会随时更新这些条款。