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

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

使用嵌套应用程序

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

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

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

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

  • 一种 AWS Serverless Application Repository 申请 – 您可以使用中的帐户可用的应用程序来定义嵌套应用程序。 AWS Serverless Application Repository. 这些可以 私人 账户中的应用程序、 私下分享 或应用程序 公开分享 在 AWS Serverless Application Repository. 有关不同部署权限级别的更多信息,请参阅 应用程序部署权限发布应用程序AWS Serverless Application Repository 开发人员指南.

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

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

注意

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

嵌套应用程序的最大参数数为60个。

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

您可以使用中提供的应用程序定义嵌套应用程序 AWS Serverless Application Repository. 您还可以使用 AWS Serverless Application Repository. 要查看中的嵌套应用程序的详细信息 AWS Serverless Application Repository,您可以使用AWSSDK, AWS CLI,或 Lambda 控制台。

要定义托管在中的应用程序 AWS Serverless Application Repository 在无服务器应用程序中 AWS SAM 模板,使用 复制为SAM资源 按钮 AWS Serverless Application Repository 应用程序。为此,请按照以下步骤操作:

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

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

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

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

以下是托管在 AWS 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: 部分。

重要

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

例如,假设一个应用程序是公开共享的,但它包含一个只与创建父应用程序的 AWS 账户私下共享的嵌套应用程序。在这种情况下,如果您的AWS帐户无权部署嵌套应用程序,则您无法部署父应用程序。有关部署应用程序的权限的更多信息,请参阅 应用程序部署权限发布应用程序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。有关详细信息,请参阅 部署无服务器应用程序.

注意

部署包含嵌套应用程序的应用程序时,必须确认。您通过将CAPAITY_AUTO_EXPAND传递到 CreateCloudFormationChangeSet API(原料药),或使用 aws serverlessrepo create-cloud-formation-change-set AWS CLI 命令。

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