服務同步組態 - AWS Proton

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

服務同步組態

透過服務同步,您可以使用 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、、prod-two、、 和 beta gamma prod-oneprod-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 Management Console 或 所做的任何手動變更 AWS CLI,例如更新服務執行個體或刪除服務執行個體。為了達成此目的, AWS Proton 會在偵測到手動變更時停用服務同步,以自動建立服務同步封鎖程式。

若要取得與服務相關聯的所有封鎖程式,您必須針對與服務serviceInstance相關聯的每個 執行下列動作:

  • 僅使用 呼叫 getServiceSyncBlockerSummary APIserviceName

  • 使用 serviceName和 呼叫 getServiceSyncBlockerSummary APIserviceInstanceName

這會傳回最新的封鎖程式清單,以及與其相關聯的狀態。如果有任何封鎖程式標示為 ACTIVE,您必須呼叫 UpdateServiceSyncBlocker API 來解決這些問題,resolvedReason並針對每個封鎖程式呼叫 blockerId和 。

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

在您擁有所有作用中的封鎖程式之後,您必須透過呼叫 UpdateServiceSyncBlocker API 搭配 blockerId和每個作用中resolvedReason的封鎖程式來解決這些問題。

使用 AWS Management Console,您可以透過導覽並選擇 AWS Proton 服務同步索引標籤來判斷服務同步是否已停用。如果服務或服務執行個體遭到封鎖,則會顯示啟用按鈕。若要啟用服務同步,請選擇啟用