创建模板同步配置 - AWS Proton

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

创建模板同步配置

了解如何使用创建模板同步配置 AWS Proton。

创建模板同步配置的先决条件:
存储库链接包含以下内容:
  • 一种 AWS Proton 授予访问您的仓库和订阅其通知的权限的 CodeConnections 连接。

  • 一个服务相关角色。在您链接存储库时,将为您创建服务相关角色。

在创建第一个模板同步配置之前,将一个模板捆绑包推送到您的存储库,如以下目录布局中所示。

/templates/ # subdirectory (optional) /templates/my-env-template/ # template name /templates/my-env-template/v1/ # template version /templates/my-env-template/v1/infrastructure/ # template bundle /templates/my-env-template/v1/schema/

在创建第一个模板同步配置后,当您推送在新版本(例如 /my-env-template/v2/)中添加更新的模板捆绑包的提交时,将会自动创建新的模板版本。

/templates/ # subdirectory (optional) /templates/my-env-template/ # template name /templates/my-env-template/v1/ # template version /templates/my-env-template/v1/infrastructure/ # template bundle /templates/my-env-template/v1/schema/ /templates/my-env-template/v2/ /templates/my-env-template/v2/infrastructure/ /templates/my-env-template/v2/schema/

您可以在一次提交中为一个或多个配置了同步的模板添加新的模板包版本。 AWS Proton 为提交中包含的每个新模板包版本创建一个新的模板版本。

创建模板同步配置后,您仍然可以在控制台中手动创建模板的新版本,也可以 AWS CLI 通过从 S3 存储桶上传模板捆绑包来手动创建模板的新版本。模板同步只能朝一个方向进行:从您的存储库到。 AWS Proton不会 同步手动创建的模板版本。

设置模板同步配置后, AWS Proton 会监听存储库的更改。每次推送更改时,它都会查找与您的模板名称相同的任何目录。然后,它会在该目录中查找任何看起来像主要版本的目录。 AWS Proton 将模板包注册到相应的模板主版本。新版本始终处于 DRAFT 状态。您可以使用控制台或发布新版本 AWS CLI。

例如,假设您配置了一个名为 my-env-template 的模板以从分支 main 上的 my-repo/templates 同步,并具有以下布局。

/code /code/service.go README.md /templates/ /templates/my-env-template/ /templates/my-env-template/v1/ /templates/my-env-template/v1/infrastructure/ /templates/my-env-template/v1/schema/ /templates/my-env-template/v2/ /templates/my-env-template/v2/infrastructure/ /templates/my-env-template/v2/schema/

AWS Proton 将 to 的内容与 /templates/my-env-template/v1/ t my-env-template:1 o 的内容同步/templates/my-env-template/v2/my-env-template:2如果这些主要版本尚不存在,则会创建这些版本。

AWS Proton 找到了与模板名称匹配的第一个目录。您可以通过在创建或编辑模板同步配置subdirectoryPath时指定来限制目录 AWS Proton 搜索。例如,您可以为 subdirectoryPath 指定 /production-templates/

您可以使用控制台或 CLI 创建模板同步配置。

AWS Management Console
使用控制台创建一个模板和模板同步配置。
  1. AWS Proton 控制台中,选择环境模板

  2. 选择创建环境模板

  3. 创建环境模板页面上的模板选项部分中,选择创建用于预置新环境的模板

  4. 模板捆绑包源部分中,选择从 Git 同步模板

  5. 源代码存储库部分中:

    1. 对于存储库,选择包含您的模板捆绑包的链接存储库。

    2. 对于分支,选择要从中同步的存储库分支。

    3. (可选)对于模板捆绑包目录,输入一个目录名称以缩小模板捆绑包的搜索范围。

  6. 模板详细信息部分中。

    1. 输入模板名称

    2. (可选)输入模板显示名称

    3. (可选)输入环境模板的模板描述

  7. (可选)选中加密设置部分中的自定义加密设置 (高级) 复选框以提供您自己的加密密钥。

  8. (可选)在标签部分中,选择添加新标签,并输入键和值以创建一个客户托管标签。

  9. 选择创建环境模板

    您现在位于一个新页面中,其中显示新环境模板的状态和详细信息。这些详细信息包括 AWS 托管标签和客户托管标签列表。 AWS Proton 创建 AWS Proton 资源时会自动为您生成 AWS 托管标签。有关更多信息,请参阅 AWS Proton 资源和标记

  10. 在模板详细信息页面中,选择同步选项卡以查看模板同步配置详细数据。

  11. 选择模板版本选项卡以查看模板版本和状态详细信息。

  12. 新环境模板的初始状态为草稿。您和具有 proton:CreateEnvironment 权限的其他人可以查看和访问该模板。执行下一步,以使该模板可供其他人使用。

  13. 模板版本部分中,选择刚创建的模板次要版本 (1.0) 左侧的单选按钮。或者,您可以在信息提醒中选择发布并跳过下一步。

  14. 模板版本部分中,选择发布

  15. 模板状态变为已发布。这是模板的最新版本(推荐版本)。

  16. 在导航窗格中,选择环境模板以查看环境模板和详细信息列表。

创建服务模板和模板同步配置的过程是类似的。

AWS CLI
使用 AWS CLI创建一个模板和模板同步配置。
  1. 创建一个模板。在该示例中,创建了一个环境模板。

    运行以下命令。

    $ aws proton create-environment-template \ --name "env-template"

    响应如下所示。

    { "environmentTemplate": { "arn": "arn:aws:proton:us-east-1:123456789012:environment-template/env-template", "createdAt": "2021-11-07T23:32:43.045000+00:00", "displayName": "env-template", "lastModifiedAt": "2021-11-07T23:32:43.045000+00:00", "name": "env-template", "status": "DRAFT", "templateName": "env-template" } }
  2. AWS CLI 通过提供以下内容来创建您的模板同步配置:
    • 您要同步到的模板。在创建模板同步配置后,您仍然可以在控制台中或使用 AWS CLI手动创建新版本。

    • 模板名称。

    • 模板类型。

    • 您要从中同步的链接存储库。

    • 链接的存储库提供商。

    • 模板捆绑包所在的分支。

    • (可选)包含模板捆绑包的目录的路径。默认情况下, AWS Proton 查找与您的模板名称匹配的第一个目录。

    运行以下命令。

    $ aws proton create-template-sync-config \ --template-name "env-template" \ --template-type "ENVIRONMENT" \ --repository-name "myrepos/templates" \ --repository-provider "GITHUB" \ --branch "main" \ --subdirectory "env-template/"

    响应如下所示。

    { "templateSyncConfigDetails": { "branch": "main", "repositoryName": "myrepos/templates", "repositoryProvider": "GITHUB", "subdirectory": "templates", "templateName": "env-template", "templateType": "ENVIRONMENT" } }
  3. 要发布您的模板版本,请参阅注册并发布模板

同步服务模板

前面的示例说明了如何同步环境模板。服务模板是类似的。要同步服务模板,您可以将一个名为 .template-registration.yaml 的附加文件添加到模板捆绑包的每个主要版本目录中。此文件包含在提交后为您创建服务模板版本时 AWS Proton 所需的其他详细信息。当您使用 AWS Proton 控制台或 API 显式创建服务模板版本时,您需要提供这些详细信息作为输入,此文件将替换这些输入以进行模板同步。

./templates/ # subdirectory (optional) /templates/my-svc-template/ # service template name /templates/my-svc-template/v1/ # service template version /templates/my-svc-template/v1/.template-registration.yaml # service template version properties /templates/my-svc-template/v1/instance_infrastructure/ # template bundle /templates/my-svc-template/v1/schema/

.template-registration.yaml 文件包含以下详细信息:

  • 兼容的环境 [必需] - 基于这些环境模板和主要版本的环境与基于该服务模板版本的服务兼容。

  • 支持的组件源 [可选] - 使用这些源的组件与基于该服务模板版本的服务兼容。如果未指定,则无法将组件附加到这些服务。有关组件的更多信息,请参阅AWS Proton 组件

该文件的 YAML 语法如下所示:

compatible_environments: - env-templ-name:major-version - ... supported_component_sources: - DIRECTLY_DEFINED

指定一个或多个环境模板/主要版本组合。指定 supported_component_sources 是可选的,唯一支持的值为 DIRECTLY_DEFINED

例 .template-registration.yaml

在该示例中,服务模板版本与 my-env-template 环境模板的主要版本 1 和 2 兼容。它还与 another-env-template 环境模板的主要版本 1 和 3 兼容。该文件未指定 supported_component_sources,因此,无法将组件附加到基于该服务模板版本的服务。

compatible_environments: - my-env-template:1 - my-env-template:2 - another-env-template:1 - another-env-template:3
注意

以前, AWS Proton 定义了不同的文件.compatible-envs,用于指定兼容的环境。 AWS Proton 为了向后兼容,仍然支持该文件及其格式。我们建议不要再使用该文件,因为它无法进行扩展,并且无法支持较新的功能(例如组件)。