服務同步配置 - AWS Proton

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

服務同步配置

透過服務同步,您可以使用 Git 設定和部署AWS Proton服務。您可以使用服務同步,透過 Git 儲存庫中定義的組態來管理AWS Proton服務的初始部署和更新。透過 Git,您可以使用版本追蹤和提取要求等功能來設定、管理和部署您的服務。服務同步結合AWS Proton和 Git 可協助您佈建透過AWS Proton範本定義和管理的標準化基礎結構。它會管理 Git 儲存庫中的服務定義,並減少工具切換。與單獨使用 Git 相比,中的範本和部署的標準化可AWS Proton協助您減少管理基礎結構的時間。 AWS Proton還為開發人員和平台團隊提供更高的透明度和可稽核性。

AWS Proton行動檔案

proton-ops檔案會定義在何處AWS Proton尋找用來更新服務執行個體的規格檔案。它也會定義更新服務執行個體的順序,以及何時將變更從一個執行個體升級到另一個執行個體。

該文proton-ops件支持使用 spec 文件或在鏈接存儲庫中找到的多個規格文件來同步服務實例。您可以透過在proton-ops檔案中定義同步區塊來執行此操作,如下列範例所示。

範例。 /配置/質子操作劑:

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,且betagammaprod-oneprod-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"

如果執行個體沒有同步處理,而且在嘗試同步時仍然存在問題,呼叫 GetServiceInstanceSyncStatusAPI 可能有助於解決問題。

注意

使用服務同步的客戶仍受到AWS Proton限制的限制。

阻斷劑

透過使用服務同步來同步AWS Proton服務,您可以更新服務規格,並從 Git 儲存庫建立和更新服務執行個體。不過,有時候您可能需要透過或手動更新服務或執行個體AWS CLI。AWS Management Console

AWS Proton協助避免覆寫您透過AWS Management Console或所做的任何手動變更AWS CLI,例如更新服務執行個體或刪除服務執行個體。若要達成此目標,請在偵測到手AWS Proton動變更時停用服務同步處理,藉此自動建立服務同步封鎖程式。

要獲取與服務相關聯的所有阻止程序,您必須對與服務serviceInstance相關的每個阻止程序執行以下操作:

  • getServiceSyncBlockerSummary使用serviceName.

  • 使用serviceName和呼叫 getServiceSyncBlockerSummary API serviceInstanceName

這將返回最新的阻止程序列表以及與它們相關的狀態。如果有任何阻止程序被標記resolvedReasonACTIVE,則必須通過使用blockerId和調用每個阻止程序的 UpdateServiceSyncBlocker API 來解決它們。

如果您手動更新或建立服務執行個體,請在服務執行個體上建AWS Proton立服務同步封鎖程式。 AWS Proton繼續同步所有其他服務實例,但禁用此服務實例的同步,直到阻止程序解決為止。如果您從服務刪除服務執行個體,請在服務上AWS Proton建立服務同步封鎖程式。這樣可以防AWS Proton止同步任何服務實例,直到阻止程序解決為止。

擁有所有活動阻止程序後,您必須通過使用blockerIdresolvedReason調用每個活動阻止程序的 UpdateServiceSyncBlocker API 來解決它們。

使用AWS Management Console,您可以瀏覽至AWS Proton並選擇 [服務同步] 索引標籤,以判斷服務同步是否已停用。如果服務或服務執行個體遭到封鎖,就會出現「啟用」按鈕。若要啟用服務同步,請選擇 [啟用]