本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
服务同步配置
通过服务同步,您可以使用 Git 配置和部署 AWS Proton 服务。您可以使用服务同步通过 Git 存储库中定义的配置管理 AWS Proton 服务的初始部署和更新。通过 Git,您可以使用版本跟踪和拉取请求等功能配置、管理和部署您的服务。服务同步将 AWS Proton 与 Git 结合使用,以帮助您预置通过 AWS Proton 模板定义和管理的标准化基础设施。它管理 Git 存储库中的服务定义并减少工具切换。与单独使用 Git 相比,AWS Proton 中的模板和部署标准化可以帮助您花更少的时间管理基础设施。AWS Proton 还为开发人员和平台团队提供了更高的透明度和可审核性。
AWS Proton OPS 文件
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"
如果一个实例未同步,并且尝试同步该实例时持续出现问题,调用 GetServiceInstanceSyncStatus
API 可能有助于解决该问题。
注意
使用服务同步的客户仍然受到 AWS Proton 限制的约束。
阻止标记
通过使用 AWS Proton 服务同步同步您的服务,您可以更新服务规范并从 Git 存储库中创建和更新服务实例。不过,您可能有时需要通过AWS Management Console或 AWS CLI 手动更新服务或实例。
AWS Proton 可以帮助避免覆盖您通过AWS CLI或 AWS Management Console 所做的任何手动更改,例如更新服务实例或删除服务实例。为了实现该目的,在检测到手动更改时,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 Management Console导航到 AWS Proton 并选择服务同步选项卡,以确定是否禁用了服务同步。如果阻止了服务或服务实例,则会显示启用按钮。要启用服务同步,请选择启用。