サービス同期設定 - AWS Proton

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

サービス同期設定

サービス同期では、Git で AWS Proton サービスを設定してデプロイできます。Service Sync を使用すると、Git リポジトリで定義された設定で、あなたの AWS Proton サービスの初期デプロイと更新を管理できます。Git では、バージョントラッキングやプルリクエストなどの機能で、あなたのサービスの設定、管理、デプロイができます。Service Sync では AWS Proton と Git を組み合わせて、AWS Proton テンプレートによって定義され、管理される標準化されたインフラストラクチャをプロビジョニングできます。Service Sync を利用すれば、あなたの 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 はサービス名で、alphabetagammaprod-oneprod-twoprod-three はインスタンスです。

spec ファイルは、すべてのインスタンスでも、proton-ops ファイル内で定義されているインスタンスのサブセットでもかまいません。ただし、少なくとも、ブランチ内で定義されたインスタンスと同期元の仕様が必要です。インスタンスが特定のブランチと spec ファイルの場所で proton-ops ファイルに定義されていないと、Service Sync ではそれらのインスタンスの作成や更新はできません。

以下の例は、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 を呼び出すと問題を解決できる場合があります。

注記

Service Sync を使用するお客様には、依然として AWS Proton 制限が適用されます。

ブロッカー

Service Sync であなたのサービスを同期すると、AWS Protonサービス仕様が更新され、あなたの Git リポジトリからサービスインスタンスを作成し、更新することができます。ただし、AWS Management Console や AWS CLI でサービスやインスタンスを手動で更新しなければならない場合もあります。

サービスインスタンスの更新やサービスインスタンスの削除など、AWS Management Console や AWS CLI で手動で行った変更が上書きされるのを AWS Proton で防ぐことができます。その場合、手動による変更を検出すると Service Sync は無効になり、AWS Proton はサービス同期ブロッカーを自動的に作成します。

サービスに関連するブロッカーをすべて取得するには、サービスに関連付けられている serviceInstance をそれぞれ順番に実行する必要があります。

  • serviceName だけで getServiceSyncBlockerSummary API を呼び出します。

  • serviceNameserviceInstanceNamegetServiceSyncBlockerSummary API を呼び出します。

これにより、最新のブロッカーとそれに関連するステータスのリストが返されます。ACTIVE とマークされているブロッカーがある場合は、blockerIdresolvedReason でそれぞれに AND を指定して UpdateServiceSyncBlocker API を呼び出して解決する必要があります。

サービスインスタンスを手動で更新するか、作成すると、AWS Proton によってそのサービスインスタンスにサービス同期ブロッカーが作成されます。AWS Proton は他のすべてのサービスインスタンスの同期を継続しますが、ブロッカーが解決されるまでこのサービスインスタンスの同期は無効になります。サービスからサービスインスタンスを削除すると、AWS Proton はそのサービス上にサービス同期ブロッカーを作成します。これにより、ブロッカーが解決されるまで、AWS Proton はどのサービスインスタンスも同期できなくなります。

アクティブなブロッカーがすべて揃ったら、blockerIdresolvedReason でアクティブなブロッカーごとに、 UpdateServiceSyncBlocker API を呼び出して問題をあなたが解決する必要があります。

AWS Management Console を使用して、AWS Proton に移動して[Service Sync] タブを選択すると、サービス同期が無効になっているかどうかを判断できます。サービスやサービスインスタンスがブロックされている場合は、[有効化] ボタンが表示されます。サービス同期を有効にするには、[有効化] を選択します。