本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
服務同步組態
透過服務同步,您可以使用 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-one
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 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 服務同步索引標籤來判斷服務同步是否已停用。如果服務或服務執行個體遭到封鎖,則會顯示啟用按鈕。若要啟用服務同步,請選擇啟用。