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

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

使用嵌套应用程序

无服务器应用程序可以包含一个或多个嵌套应用程序。您可以将嵌套应用程序部署为独立项目或大型应用程序的组件。

随着无服务器架构的发展,常见模式出现在多个应用程序模板中定义相同组件时。现在,您可以将常见模式作为专用应用程序分离,然后将其作为新应用程序模板或现有应用程序模板的一部分嵌套。借助嵌套应用程序,您可以更多地关注应用程序独有的业务逻辑。

要在无服务器应用程序中定义嵌套应用程序,请使用 AWS::Serverless::Application 资源类型。

您可以从以下两个源定义嵌套应用程序:

有关如何使用 AWS SAM 在无服务器应用程序中定义这两种类型的嵌套应用程序的详细信息,请参阅以下部分。

注意

无服务器应用程序中可以嵌套的应用程序数量上限为 200。

嵌套应用程序可以拥有的最大参数数量为 60。

从 AWS Serverless Application Repository 中定义嵌套应用程序

您可以使用 AWS Serverless Application Repository 中可用的应用程序定义嵌套应用程序。您还可以使用 AWS Serverless Application Repository 存储和分发包含嵌套应用程序的应用程序。要在 AWS Serverless Application Repository中查看嵌套应用程序的详细信息,您可以使用 AWS 开发工具包、AWS CLI 或 Lambda 控制台。

要定义在无服务器应用程序的 AWS Serverless Application Repository 模板中的 AWS SAM 中托管的应用程序,请使用每个 应用程序的详细信息页面上的 Copy as SAM Resource (复制为 SAM 资源)AWS Serverless Application Repository 按钮。为此,请按照以下步骤操作:

  1. 确保您已登录 AWS 管理控制台。

  2. 使用 AWS Serverless Application Repository浏览、搜索和部署应用程序部分中的步骤,查找您要嵌套在 AWS Serverless Application Repository 开发人员指南 中的应用程序。

  3. 选择 Copy as SAM Resource (复制为 SAM 资源) 按钮。您正在查看的应用程序的 SAM 模板部分现在位于剪贴板中。

  4. 将 SAM 模板部分粘贴到要嵌套在此应用程序中的应用程序的 SAM 模板文件的 Resources: 部分中。

以下是托管在 AWS Serverless Application Repository 中的嵌套应用程序的示例 SAM 模板部分:

Transform: AWS::Serverless-2016-10-31 Resources: applicationaliasname: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-1:123456789012:applications/application-alias-name SemanticVersion: 1.0.0 Parameters: # Optional parameter that can have default value overridden # ParameterName1: 15 # Uncomment to override default value # Required parameter that needs value to be provided ParameterName2: YOUR_VALUE

如果没有必需的参数设置,您可以省略模板的 Parameters: 部分。

重要

包含 AWS Serverless Application Repository 中托管的嵌套应用程序的应用程序将继承嵌套应用程序的共享限制。

例如,假设一个应用程序是公开共享的,但它包含一个只与创建父应用程序的 AWS 账户私下共享的嵌套应用程序。在这种情况下,如果您的 AWS 账户无权部署嵌套应用程序,则无法部署父应用程序。有关部署应用程序的权限的更多信息,请参阅 https://docs.amazonaws.cn/serverlessrepo/latest/devguide/serverless-app-consuming-applications.html#application-deployment-permissions 中的应用程序部署权限发布应用程序AWS Serverless Application Repository 开发人员指南。

从本地文件系统定义嵌套应用程序

您可以使用存储在本地文件系统上的应用程序定义嵌套应用程序。您可以通过指定存储在本地文件系统上的 AWS SAM 模板文件的路径来执行此操作。

以下是嵌套本地应用程序的示例 SAM 模板部分:

Transform: AWS::Serverless-2016-10-31 Resources: applicationaliasname: Type: AWS::Serverless::Application Properties: Location: ../my-other-app/template.yaml Parameters: # Optional parameter that can have default value overridden # ParameterName1: 15 # Uncomment to override default value # Required parameter that needs value to be provided ParameterName2: YOUR_VALUE

如果没有参数设置,您可以省略模板的 Parameters: 部分。

部署嵌套应用程序

您可以使用 AWS SAM CLI 命令 sam deploy 部署嵌套应用程序。 有关更多详细信息,请参阅部署无服务器应用程序

注意

在部署包含嵌套应用程序的应用程序时,您必须确认这一点。您可以通过将 CAPABILITY_AUTO_EXPAND 传递到 CreateCloudFormationChangeSet API 或使用 aws serverlessrepo create-cloud-formation-change-set AWS CLI 命令来执行此操作。

有关确认嵌套应用程序的更多信息,请参阅 https://docs.amazonaws.cn/serverlessrepo/latest/devguide/acknowledging-application-capabilities.html 中的确认部署应用程序时的 IAM 角色、资源策略和嵌套应用程序AWS Serverless Application Repository 开发人员指南。