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

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

使用嵌套应用程序

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

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

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

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

  • 一个Amazon Serverless Application Repository应用程序— 您可以定义嵌套应用程序,方法是使用Amazon Serverless Application Repository。这些可能是私有您帐户中的应用程序,私下共享与您的帐户,或公开共享中的Amazon Serverless Application Repository。有关不同部署权限级别的更多信息,请参阅。应用程序部署权限发布应用程序中的Amazon Serverless Application Repository开发人员指南

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

有关如何使用的详细信息,请参阅下面几节。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 模板部分,该应用程序托管在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。有关更多信息,请参阅部署无服务器应用

注意

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

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