本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
服务同步配置
通过服务同步,您可以使用 Git 配置和部署 AWS Proton 服务。通过在 Git 存储库中定义的配置,您可以使用 AWS Proton 服务同步来管理服务的初始部署和更新。通过 Git,您可以使用版本跟踪和拉取请求等功能配置、管理和部署您的服务。服务同步与 Git 相结合 AWS Proton ,可帮助您配置通过 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 CLI。 AWS Management Console
AWS Proton 有助于避免覆盖您通过 AWS Management Console 或所做的任何手动更改 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 Management Console,您可以通过导航到 “服务同步” 选项卡 AWS Proton 并选择该选项卡来确定是否禁用了服务同步。如果阻止了服务或服务实例,则会显示启用按钮。要启用服务同步,请选择启用。