

终止支持通知：2026 年 10 月 7 日， AWS 将终止对的支持。 AWS Proton 2026 年 10 月 7 日之后，您将无法再访问 AWS Proton 控制台或 AWS Proton 资源。您部署的基础架构将保持不变。有关更多信息，请参阅《[AWS Proton 服务弃用和迁移指南》](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)。

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

# 模板同步配置
<a name="ag-template-sync-configs"></a>

了解如何配置模板以允许从位于您定义的已注册 git 存储库中的模板包进行 AWS Proton 同步。在将提交推送到您的存储库时， AWS Proton 检查您的存储库模板捆绑包的更改。如果它检测到模板包发生了更改，则会创建其模板的新次要版本或主要版本（如果该版本尚不存在）。 AWS Proton 目前支持 GitHub、 GitHub 企业版和 BitBucket。

## 将提交推送到同步的模板捆绑包
<a name="ag-commits"></a>

在您将提交推送到由您的模板之一跟踪的分支时， AWS Proton 克隆您的存储库，并确定需要同步哪些模板。它扫描目录中的文件以查找符合 `{template-name}/{major-version}/` 约定的目录。

在 AWS Proton 确定哪些模板和主要版本与您的存储库和分支关联后，它开始尝试并行同步所有这些模板。

每次同步到特定模板时， AWS Proton 首先要检查自上次成功同步以来模板目录的内容是否发生了变化。如果内容未更改，则 AWS Proton 跳过注册重复捆绑包的操作。这可确保在模板捆绑包内容发生变化时创建新的模板次要版本。如果模板包的内容发生更改，则该捆绑包将在中注册 AWS Proton。

注册模板包后，将 AWS Proton 监控注册状态，直到注册完成。

特定模板次要版本和主要版本在一个给定时间只能发生一次同步。在进行同步时可能推送的任何提交都会进行批量处理。批量提交将在上一个同步尝试完成后进行同步。

## 同步服务模板
<a name="syncing-service-templates"></a>

AWS Proton 可以同步您的 git 存储库中的环境和服务模板。要同步您的服务模板，您可以将一个名为 `.template-registration.yaml` 的附加文件添加到模板捆绑包的每个主要版本目录中。此文件包含在提交后为您创建服务模板版本时 AWS Proton 所需的其他详细信息：*兼容环境*和*支持的组件源*。

该文件的完整路径是 `service-template-name/major-version/.template-registration.yaml`。有关更多信息，请参阅 [同步服务模板](create-template-sync.md#create-template-sync-service-templates)。

## 模板同步配置注意事项
<a name="sync-considerations"></a>

查看以下使用模板同步配置的注意事项。
+ 存储库不能超过 250 MB。
+ 要配置模板同步，请先将存储库链接到 AWS Proton。有关更多信息，请参阅 [创建存储库的链接](ag-create-repo.md)。
+ 通过同步的模板创建新的模板版本时，该版本处于 `DRAFT` 状态。
+ 如果满足以下条件之一，则会创建新的模板次要版本：
  + 模板捆绑包内容与上次同步的模板次要版本内容不同。
  + 已删除上次同步的模板次要版本。
+ 无法暂停同步。
+ 新的次要版本或主要版本都是自动同步的。
+ 无法通过模板同步配置创建新的顶级模板。
+ 您无法使用模板同步配置从多个存储库同步到一个模板。
+ 您无法使用标签替代分支。
+ 在[创建服务模板](template-create.md#svc-template-v1)时，您可以指定兼容的环境模板。
+ 您可以创建一个环境模板，并将其作为服务模板的兼容环境添加到同一提交中。
+ 到单个模板主要版本的同步每次运行一个。在同步期间，如果检测到任何新的提交，则会在活动同步结束时批处理并应用新的提交。到不同模板主要版本的同步是并行发生的。
+ 如果您更改模板从中同步的分支，则正在从旧分支进行的任何同步先完成。然后，开始从新分支进行同步。
+ 如果您更改模板从中同步的存储库，则正在从旧存储库进行的任何同步可能会失败或无法完成。这取决于它们处于同步的哪个阶段。

有关更多信息，请参阅[https://docs.aws.amazon.com/proton/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/proton/latest/APIReference/Welcome.html)。

**Topics**
+ [

## 将提交推送到同步的模板捆绑包
](#ag-commits)
+ [

## 同步服务模板
](#syncing-service-templates)
+ [

## 模板同步配置注意事项
](#sync-considerations)
+ [

# 创建模板同步配置
](create-template-sync.md)
+ [

# 查看模板同步配置详细信息
](view-template-sync.md)
+ [

# 编辑模板同步配置
](update-template-sync.md)
+ [

# 删除模板同步配置
](delete-template-sync.md)

# 创建模板同步配置
<a name="create-template-sync"></a>

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

**创建模板同步配置的先决条件：**
+ 您已[将存储库链接](ag-create-repo.md)到 AWS Proton。
+ [模板捆绑包](ag-template-authoring.md#ag-template-bundles)位于您的存储库中。

**存储库链接包含以下内容：**
+ 一种 AWS Proton 授予访问您的仓库和订阅其通知的权限的 CodeConnections 连接。
+ 一个[服务相关角色](using-service-linked-roles.md)。在您链接存储库时，将为您创建服务相关角色。

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

```
 /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` 状态。您可以使用控制台或[发布新版本](template-create.md) 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 管理控制台 ]

**使用控制台创建一个模板和模板同步配置。**

1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)中，选择**环境模板**。

1. 选择**创建环境模板**。

1. 在**创建环境模板**页面上的**模板选项**部分中，选择**创建用于预置新环境的模板**。

1. 在**模板捆绑包源**部分中，选择**从 Git 同步模板**。

1. 在**源代码存储库**部分中：

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

   1. 对于**分支**，选择要从中同步的存储库分支。

   1. （可选）对于**模板捆绑包目录**，输入一个目录名称以缩小模板捆绑包的搜索范围。

1. 在**模板详细信息**部分中。

   1. 输入**模板名称**。

   1. （可选）输入**模板显示名称**。

   1. （可选）输入环境模板的**模板描述**。

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

1. （可选）在**标签**部分中，选择**添加新标签**，并输入键和值以创建一个客户托管标签。

1. 选择**创建环境模板**。

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

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

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

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

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

1. 在**模板版本**部分中，选择**发布**。

1. 模板状态变为**已发布**。这是模板的最新版本（**推荐**版本）。

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

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

------
#### [ 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"
       }
   }
   ```

1. 

**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"
       }
   }
   ```

1. **要发布您的模板版本，请参阅[注册并发布模板](template-create.md)。**

------

## 同步服务模板
<a name="create-template-sync-service-templates"></a>

前面的示例说明了如何同步环境模板。服务模板是类似的。要同步服务模板，您可以将一个名为 `.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 组件](ag-components.md)。

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

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

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

**Example .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 为了向后兼容，仍然支持该文件及其格式。我们建议不要再使用该文件，因为它无法进行扩展，并且无法支持较新的功能（例如组件）。

# 查看模板同步配置详细信息
<a name="view-template-sync"></a>

使用控制台或 CLI 查看模板同步配置详细数据。

------
#### [ AWS 管理控制台 ]

**使用控制台查看模板同步配置详细信息。**

1. 在导航窗格中，选择**（环境或服务）模板**。

1. 要查看详细数据，请选择您创建模板同步配置的模板的名称。

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

------
#### [ AWS CLI ]

**使用 AWS CLI 查看已同步的模板。**

运行如下命令。

```
$ aws proton get-template-sync-config \
    --template-name "svc-template" \
    --template-type "SERVICE"
```

响应如下所示。

```
{
    "templateSyncConfigDetails": {
        "branch": "main",
        "repositoryProvider": "GITHUB",
        "repositoryName": "myrepos/myrepo",
        "subdirectory": "svc-template",
        "templateName": "svc-template",
        "templateType": "SERVICE"
    }
}
```

**使用 AWS CLI 获取模板同步状态。**

对于 `template-version`，输入模板主要版本。

运行如下命令。

```
$ aws proton get-template-sync-status \
    --template-name "env-template" \
    --template-type "ENVIRONMENT" \
    --template-version "1"
```

------

# 编辑模板同步配置
<a name="update-template-sync"></a>

您可以编辑除 `template-name` 和 `template-type` 以外的任何模板同步配置参数。

了解使用控制台或 CLI 编辑模板同步配置。

------
#### [ AWS 管理控制台 ]

使用控制台编辑模板同步配置分支。

**在模板列表中。**

1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)中，选择**（环境或服务）模板**。

1. 在模板列表中，选择具有要编辑的模板同步配置的模板的名称。

1. 在模板详细信息页面中，选择**模板同步**选项卡。

1. 在**模板同步详细信息**部分中，选择**编辑**。

1. 在**编辑**页面上的**源代码存储库**部分中，为**分支**选择一个分支，然后选择**保存配置**。

------
#### [ AWS CLI ]

**以下示例命令和响应说明了如何使用 CLI 编辑模板同步配置`branch`。**

运行如下命令。

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

响应如下所示。

```
{
    "templateSyncConfigDetails": {
        "branch": "fargate",
        "repositoryProvider": "GITHUB",
        "repositoryName": "myrepos/myrepo",
        "subdirectory": "templates",
        "templateName": "env-template",
        "templateType": "ENVIRONMENT"
    }
}
```

同样，您也可以使用 AWS CLI 来更新同步的服务模板。

------

# 删除模板同步配置
<a name="delete-template-sync"></a>

使用控制台或 CLI 删除模板同步配置。

------
#### [ AWS 管理控制台 ]

**使用控制台删除模板同步配置。**

1. 在模板详细信息页面中，选择**同步**选项卡。

1. 在**同步详细信息**部分中，选择**断开**。

------
#### [ AWS CLI ]

**以下示例命令和响应显示了如何使用删除同步的 AWS CLI 模板配置。**

运行如下命令。

```
$ aws proton delete-template-sync-config \
    --template-name "env-template" \
    --template-type "ENVIRONMENT"
```

响应如下所示。

```
{
    "templateSyncConfig": {
        "templateName": "env-template",
        "templateType": "ENVIRONMENT"
    }
}
```

------