Konfigurationen für die Dienstsynchronisierung - AWS Proton

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurationen für die Dienstsynchronisierung

Mit Service Sync können Sie Ihre AWS Proton Dienste mit Git konfigurieren und bereitstellen. Sie können Service Sync verwenden, um erste Bereitstellungen und Updates für Ihren AWS Proton Service mit einer in einem Git-Repository definierten Konfiguration zu verwalten. Über Git kannst du Funktionen wie Versionsverfolgung und Pull-Requests verwenden, um deine Dienste zu konfigurieren, zu verwalten und bereitzustellen. Service Sync kombiniert AWS Proton und Git unterstützt Sie bei der Bereitstellung einer standardisierten Infrastruktur, die über AWS Proton Vorlagen definiert und verwaltet wird. Es verwaltet Dienstdefinitionen in Ihrem Git-Repository und reduziert den Werkzeugwechsel. Im Vergleich zur alleinigen Verwendung von Git können Sie durch die Standardisierung von Vorlagen und Bereitstellung weniger Zeit für die Verwaltung Ihrer Infrastruktur aufwenden. AWS Proton AWS Proton bietet außerdem eine höhere Transparenz und Überprüfbarkeit sowohl für Entwickler als auch für Plattformteams.

AWS Proton OPS-Datei

Die proton-ops Datei definiert, wo AWS Proton sich die Spezifikationsdatei befindet, die zum Aktualisieren Ihrer Dienstinstanz verwendet wird. Sie definiert auch, in welcher Reihenfolge Serviceinstanzen aktualisiert werden sollen und wann Änderungen von einer Instanz auf eine andere übertragen werden sollen.

Die proton-ops Datei unterstützt das Synchronisieren einer Dienstinstanz mithilfe der Spezifikationsdatei oder mehrerer Spezifikationsdateien, die sich in Ihrem verknüpften Repository befinden. Sie können dies tun, indem Sie einen Sync-Block in der proton-ops Datei definieren, wie im folgenden Beispiel.

Beispiel. /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

Im vorherigen Beispiel sind dies der Dienstname und,frontend-svc,,, alphabeta, gamma und sind die Instanzen. prod-one prod-two prod-three

Bei der spec Datei kann es sich um alle Instanzen oder eine Teilmenge der in der proton-ops Datei definierten Instanzen handeln. Es muss jedoch mindestens die Instanz innerhalb des Branches und die Spezifikation, mit der sie synchronisiert wird, definiert sein. Wenn in der proton-ops Datei keine Instanzen mit dem spezifischen Zweig und dem Speicherort der spec Datei definiert sind, erstellt oder aktualisiert Service Sync diese Instanzen nicht.

Die folgenden Beispiele zeigen, wie die spec Dateien aussehen. Denken Sie daran, dass die proton-ops Datei aus diesen spec Dateien synchronisiert wird.

Beispiel: ./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"

Beispiel./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"

Beispiel./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"

Wenn eine Instanz nicht synchronisiert wird und beim Versuch, sie zu synchronisieren, weiterhin ein Problem auftritt, kann der Aufruf der GetServiceInstanceSyncStatusAPI zur Lösung des Problems beitragen.

Anmerkung

Kunden, die Service Sync verwenden, sind immer noch durch AWS Proton Beschränkungen eingeschränkt.

Blocker

Indem Sie Ihren Service mithilfe AWS Proton von Service Sync synchronisieren, können Sie Ihre Servicespezifikation aktualisieren und Service-Instanzen aus Ihrem Git-Repository erstellen und aktualisieren. Es kann jedoch vorkommen, dass Sie einen Service oder eine Instanz manuell über das AWS Management Console oder aktualisieren müssen. AWS CLI

AWS Proton verhindert, dass manuelle Änderungen, die Sie über das AWS Management Console oder vornehmen, überschrieben werden AWS CLI, z. B. das Aktualisieren einer Dienstinstanz oder das Löschen einer Dienstinstanz. Um dies zu erreichen, erstellt es AWS Proton automatisch einen Service Sync-Blocker, indem Service Sync deaktiviert wird, wenn eine manuelle Änderung erkannt wird.

Um alle mit einem Dienst verknüpften Blocker abzurufen, müssen Sie für jeden, der mit dem Dienst serviceInstance verknüpft ist, die folgenden Schritte ausführen:

  • Rufen Sie die getServiceSyncBlockerSummary API nur mit dem aufserviceName.

  • Rufen Sie die getServiceSyncBlockerSummary API mit dem serviceName und aufserviceInstanceName.

Dadurch wird eine Liste der neuesten Blocker und der ihnen zugeordnete Status zurückgegeben. Wenn irgendwelche Blocker als AKTIV markiert sind, müssen Sie sie lösen, indem Sie die UpdateServiceSyncBlocker API mit dem blockerId und resolvedReason für jeden Block aufrufen.

Wenn Sie eine Dienstinstanz manuell aktualisieren oder erstellen, AWS Proton wird auf der Dienstinstanz ein Dienstsynchronisierungsblocker erstellt. AWS Proton synchronisiert weiterhin alle anderen Dienstinstanzen, deaktiviert jedoch die Synchronisierung dieser Dienstinstanz, bis der Blocker behoben ist. Wenn Sie eine Dienstinstanz aus einem Dienst löschen, AWS Proton wird für den Dienst ein Dienstsynchronisierungsblocker erstellt. Dadurch wird AWS Proton verhindert, dass eine der Dienstinstanzen synchronisiert wird, bis der Blocker behoben wurde.

Wenn Sie alle aktiven Blocker haben, müssen Sie sie lösen, indem Sie die UpdateServiceSyncBlocker API mit blockerId und resolvedReason für jeden der aktiven Blocker aufrufen.

Mithilfe von können Sie feststellen AWS Management Console, ob eine Dienstsynchronisierung deaktiviert ist, indem Sie zur Registerkarte Service Sync navigieren AWS Proton und diese auswählen. Wenn der Dienst oder die Dienstinstanzen blockiert sind, wird die Schaltfläche Aktivieren angezeigt. Um die Dienstsynchronisierung zu aktivieren, wählen Sie Aktivieren.