

终止支持通知：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-service-sync-configs"></a>

通过服务同步，您可以使用 Git 配置和部署 AWS Proton 服务。通过在 Git 存储库中定义的配置，您可以使用 AWS Proton 服务同步来管理服务的初始部署和更新。通过 Git，您可以使用版本跟踪和拉取请求等功能配置、管理和部署您的服务。服务同步与 Git 相结合 AWS Proton ，可帮助您配置通过 AWS Proton 模板定义和管理的标准化基础架构。它管理 Git 存储库中的服务定义并减少工具切换。与单独使用 Git 相比，模板和部署的标准化 AWS Proton 可帮助您减少管理基础架构所花费的时间。 AWS Proton 还为开发人员和平台团队提供了更高的透明度和可审计性。

## AWS Proton OPS 文件
<a name="service-sync-ops"></a>

该`proton-ops`文件定义了用于更新服务实例的规范文件的位置 AWS Proton 。它还定义了更新服务实例的顺序以及何时将更改从一个实例传播到另一个实例。

`proton-ops` 文件支持使用位于链接的存储库中的一个或多个规范文件同步服务实例。您可以在 `proton-ops` 文件中定义同步块以实现该目的，如以下示例中所示。

**示例 ./configuration/proton-ops.yaml：**

```
sync:
  services:
      frontend-svc:
          alpha:
              branch: dev
              spec: ./frontend-svc/test/frontend-spec.yaml
          beta:
              branch: dev
              spec: ./frontend-svc/test/frontend-spec.yaml
          gamma:
              branch: pre-prod
              spec: ./frontend-svc/pre-prod/frontend-spec.yaml
          prod-one:
              branch: prod
              spec: ./frontend-svc/prod/frontend-spec-second.yaml
          prod-two:
              branch: prod
              spec: ./frontend-svc/prod/frontend-spec-second.yaml
          prod-three:
              branch: prod
              spec: ./frontend-svc/prod/frontend-spec-second.yaml
```

在前面的示例中，`frontend-svc` 是服务名称，`alpha`、`beta`、`gamma`、`prod-one`、`prod-two` 和 `prod-three` 是实例。

`spec` 文件可以是 `proton-ops` 文件中定义的所有实例或一部分实例。不过，它必须至少在从中同步的分支和规范中定义了实例。如果在 `proton-ops` 文件中未使用特定分支和 `spec` 文件位置定义实例，则服务同步不会创建或更新这些实例。

以下示例显示了 `spec` 文件的外观。请记住，`proton-ops` 文件是从这些 `spec` 文件同步的。

**示例`./frontend-svc/test/frontend-spec.yaml`：**

```
proton: "ServiceSpec"
instances:
- name: "alpha"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
- name: "beta"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
```

**示例`./frontend-svc/pre-prod/frontend-spec.yaml`：**

```
proton: "ServiceSpec"
instances:
- name: "gamma"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
```

**示例`./frontend-svc/prod/frontend-spec-second.yaml`：**

```
proton: "ServiceSpec"
instances:
- name: "prod-one"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
- name: "prod-two"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
- name: "prod-three"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
```

如果一个实例未同步，并且尝试同步该实例时持续出现问题，调用 [https://docs.aws.amazon.com//proton/latest/APIReference/API_GetServiceInstanceSyncStatus.html](https://docs.aws.amazon.com//proton/latest/APIReference/API_GetServiceInstanceSyncStatus.html) API 可能有助于解决该问题。

**注意**  
使用服务同步的客户仍然受到 AWS Proton 限制。

**阻止标记**

通过使用服务同步来同步 AWS Proton 服务，您可以更新服务规范，并从 Git 存储库中创建和更新服务实例。但是，有时可能需要通过或手动更新服务或实例 AWS CLI。 AWS 管理控制台 

AWS Proton 有助于避免覆盖您通过 AWS 管理控制台 或所做的任何手动更改 AWS CLI，例如更新服务实例或删除服务实例。为了实现该目的，在检测到手动更改时， AWS Proton 禁用服务同步以自动创建服务同步阻止标记。

要获取与某个服务关联的所有阻止标记，您必须按顺序为与该服务关联的每个 `serviceInstance` 执行以下操作：
+ 仅使用 `serviceName` 调用 `getServiceSyncBlockerSummary` API。
+ 使用 `serviceName` 和 `serviceInstanceName` 调用 `getServiceSyncBlockerSummary` API。

这会返回最近的阻止标记及其关联状态的列表。如果任何阻止标记标为 **ACTIVE**，您必须使用 `blockerId` 和 `resolvedReason` 为每个阻止标记调用 `UpdateServiceSyncBlocker` API 以解除这些阻止标记。

如果您手动更新或创建服务实例，则会在服务实例上 AWS Proton 创建服务同步拦截器。 AWS Proton 继续同步所有其他服务实例，但在阻止程序解决之前禁用此服务实例的同步。如果您从服务中删除服务实例，则会在该服务上 AWS Proton 创建服务同步拦截器。这可以 AWS Proton 防止在解决拦截器之前同步任何服务实例。

在创建所有活动阻止标记后，您必须使用 `blockerId` 和 `resolvedReason` 为每个活动阻止标记调用 `UpdateServiceSyncBlocker` API 以解除这些阻止标记。

使用 AWS 管理控制台，您可以通过导航到 “服务同步” 选项卡 AWS Proton 并选择该选项卡来确定是否禁用了**服务同步**。如果阻止了服务或服务实例，则会显示**启用**按钮。要启用服务同步，请选择**启用**。

**Topics**
+ [AWS Proton OPS 文件](#service-sync-ops)
+ [创建服务同步配置](create-service-sync.md)
+ [查看服务同步的配置详细信息](get-service-sync.md)
+ [编辑服务同步配置](update-service-sync.md)
+ [删除服务同步配置](delete-service-sync.md)

# 创建服务同步配置
<a name="create-service-sync"></a>



您可以使用控制台或创建服务同步配置 AWS CLI。

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

1. 在**选择服务模板**页面上，选择一个模板并选择**配置**。

1. 在**配置服务**页面上的**服务详细信息**部分中，输入新的**服务名称**。

1. （可选）输入服务的描述。

1. 在 “**应用程序源代码存储库**” 部分，选择 “**选择链接的 Git 存储库**”，选择已与之关联的存储库 AWS Proton。如果您还没有链接的存储库，请选择**链接另一个 Git 存储库**，然后按照[创建存储库的链接](https://docs.aws.amazon.com//proton/latest/userguide/ag-create-repo.html)中的说明进行操作。

1. 对于**存储库**，从列表中选择您的源代码存储库的名称。

1. 对于**分支**，从列表中选择您的源代码的存储库分支的名称。

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

1. 选择**下一步**。

1. 在**配置服务实例**页面上的**服务定义源**部分中，选择**从 Git 同步您的服务**。

1. 在**服务定义文件**部分中，如果您希望 AWS Proton 创建 `proton-ops` 文件，请选择**我希望 AWS Proton 创建文件**。使用此选项，在您指定的位置 AWS Proton 创建`spec`和`proton-ops`文件。选择**我正在提供我自己的文件**以创建您自己的 OPS 文件。

1. 在 “**服务定义存储库**” 部分，选择 “**选择链接的 Git 存储库**”，选择已与之关联的存储库 AWS Proton。

1. 对于**存储库名称**，从列表中选择您的源代码存储库的名称。

1. 对于**`proton-ops`文件分支**，请从列表中选择您的分支名称，该分支 AWS Proton 将存放您的 OPS 和规格文件。

1. 在**服务实例**部分中，将根据 `proton-ops` 文件中的值自动填充每个字段。

1. 选择**下一步**并检查您的输入。

1. 选择**创建**。

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

**使用创建服务同步配置 AWS CLI**
+ 运行以下命令。

  ```
  $ aws proton create-service-sync-config \
      --resource "service-arn" \
      --repository-provider "GITHUB" \
      --repository "example/proton-sync-service" \
      --ops-file-branch "main" \
      --proton-ops-file "./configuration/custom-proton-ops.yaml" (optional)
  ```

  响应如下所示。

  ```
  {
      "serviceSyncConfig": {
          "branch": "main",
          "filePath": "./configuration/custom-proton-ops.yaml",
          "repositoryName": "example/proton-sync-service",
          "repositoryProvider": "GITHUB",
          "serviceName": "service name"
      }
  }
  ```

------

# 查看服务同步的配置详细信息
<a name="get-service-sync"></a>

您可以使用控制台或 AWS CLI查看服务同步的配置详细数据。

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

**使用控制台查看服务同步的配置详细信息**

1. 在导航窗格中，选择**服务**。

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

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

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

**使用 AWS CLI 获取同步服务。**

运行以下命令。

```
$ aws proton get-service-sync-config \
    --service-name "service name"
```

响应如下所示。

```
{
    "serviceSyncConfig": {
        "branch": "main",
        "filePath": "./configuration/custom-proton-ops.yaml",
        "repositoryName": "example/proton-sync-service",
        "repositoryProvider": "GITHUB",
        "serviceName": "service name"
    }
}
```

**使用 AWS CLI 获取服务同步状态。**

运行以下命令。

```
$ aws proton get-service-sync-status \
    --service-name "service name"
```

------

# 编辑服务同步配置
<a name="update-service-sync"></a>

您可以使用控制台或编辑服务同步配置 AWS CLI。



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

使用控制台编辑服务同步配置。

1. 在导航窗格中，选择**服务**。

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

1. 在服务详细信息页面上，选择**服务同步**选项卡。

1. 在**服务同步**部分中，选择**编辑**。

1. 在**编辑**页面上，更新要编辑的信息，然后选择**保存**。

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

**以下示例命令和响应说明了如何使用 AWS CLI编辑服务同步配置。**

运行以下命令。

```
$ aws proton update-service-sync-config \
    --service-name "service name" \
    --repository-provider "GITHUB" \
    --repository "example/proton-sync-service" \
    --ops-file-branch "main" \
    --ops-file "./configuration/custom-proton-ops.yaml"
```

响应如下所示。

```
{
    "serviceSyncConfig": {
        "branch": "main",
        "filePath": "./configuration/custom-proton-ops.yaml",
        "repositoryName": "example/proton-sync-service",
        "repositoryProvider": "GITHUB",
        "serviceName": "service name"
    }
}
```

------

# 删除服务同步配置
<a name="delete-service-sync"></a>

您可以使用控制台或删除服务同步配置 AWS CLI。

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

**使用控制台删除服务同步配置**

1. 在服务详细信息页面上，选择**服务同步**选项卡。

1. 在**服务同步详细信息**部分中，选择**断开**以断开连接您的存储库。在断开连接您的存储库后，我们不再从该存储库同步服务。

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

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

运行以下命令。

```
$ aws proton delete-service-sync-config \
    --service-name "service name"
```

响应如下所示。

```
{
    "serviceSyncConfig": {
        "branch": "main",
        "filePath": "./configuration/custom-proton-ops.yaml",
        "repositoryName": "example/proton-sync-service",
        "repositoryProvider": "GITHUB",
        "serviceName": "service name"
    }
}
```

**注意**  
服务同步不会删除服务实例。它仅删除配置。

------