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

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

使用嵌套应用

无服务器应用程序可能包含一个或多个嵌套应用. 您可以将嵌套应用程序部署为独立工件或作为较大应用程序的组件进行部署。

随着无服务器架构的增长,常见的模式会出现在多个应用程序模板中定义相同的组件。现在,您可以将常见模式分开为专用应用程序,然后将它们嵌套为新的或现有的应用程序模板的一部分。使用嵌套应用程序,您可以更加专注于应用程序独有的业务逻辑。

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

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

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon Serverless Application Repository应用程序— 您可以通过使用可供您的帐户使用的应用程序来定义嵌套应用程序Amazon Serverless Application Repository. 这些可能是私人的您账户中的应用程序,私下共享使用你的帐户或应用程序公开共享中的Amazon Serverless Application Repository. 有关不同部署权限级别的更多信息,请参阅应用程序部署权限发布应用程序中的Amazon Serverless Application Repository开发人员指南.

  • 一个本地应用— 您可以使用存储在本地文件系统上的应用程序来定义嵌套应用程序。

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

注意

可以嵌套在无服务器应用程序中的最大数量为 200 个。

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

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

您可以使用在Amazon Serverless Application Repository. 您还可以使用Amazon Serverless Application Repository. 要查看嵌套应用程序的详细信息Amazon Serverless Application Repository,您可以使用Amazon开发工具包,Amazon CLI或者 Lambda 控制台。

定义托管在Amazon Serverless Application Repository在您的无服务器应用程序中Amazon SAM模板,请使用复制为 SAM 资源每个详情页面上的按钮Amazon Serverless Application Repository应用程序. 为此,请按照以下步骤操作:

  1. 请确保您已登录到Amazon Web Services Management Console.

  2. 找到要嵌套到Amazon Serverless Application Repository通过使用中的步骤浏览、搜索和部署应用程序的 部分Amazon Serverless Application Repository开发人员指南.

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

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

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

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:模板的部分。

重要

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

例如,假设一个应用程序是公开共享的,但它包含一个只与私下共享的嵌套应用程序Amazon创建父应用程序的账户。在这种情况下,如果你Amazon帐户没有部署嵌套应用程序的权限,您无法部署父应用程序。有关部署应用程序的权限的更多信息,请参阅应用程序部署权限发布应用程序中的Amazon Serverless Application Repository开发人员指南.

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

您可以使用存储在本地文件系统上的应用程序来定义嵌套应用程序。您可以通过指定路径来指定路径。Amazon 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:模板的部分。

部署嵌套应用

您可以使用Amazon SAMCLI 命令sam deploy. 有关更多信息,请参阅 部署无服务器程序

注意

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

有关确认嵌套应用程序的更多信息,请参在部署应用程序时确认 IAM 角色、资源策略和嵌套应用程序中的Amazon Serverless Application Repository开发人员指南.