Configurations de synchronisation des services - AWS Proton

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurations de synchronisation des services

La synchronisation des services vous permet de configurer et de déployer vos AWS Proton services à l'aide de Git. Vous pouvez utiliser la synchronisation des services pour gérer les déploiements initiaux et les mises à jour de votre AWS Proton service à l'aide d'une configuration définie dans un référentiel Git. Grâce à Git, vous pouvez utiliser des fonctionnalités telles que le suivi des versions et les pull requests pour configurer, gérer et déployer vos services. Service Sync combine AWS Proton Git pour vous aider à fournir une infrastructure standardisée définie et gérée à l'aide AWS Proton de modèles. Il gère les définitions de service dans votre référentiel Git et réduit le nombre de changements d'outils. Par rapport à l'utilisation de Git seul, la standardisation des modèles et du déploiement vous AWS Proton permet de passer moins de temps à gérer votre infrastructure. AWS Protonoffre également une transparence et une auditabilité accrues à la fois pour les développeurs et les équipes de plateforme.

AWS ProtonFichier OPS

Le proton-ops fichier définit l'emplacement AWS Proton du fichier de spécifications utilisé pour mettre à jour votre instance de service. Il définit également l'ordre dans lequel les instances de service doivent être mises à jour et à quel moment promouvoir les modifications d'une instance à l'autre.

Le proton-ops fichier prend en charge la synchronisation d'une instance de service à l'aide du fichier de spécifications, ou de plusieurs fichiers de spécifications, trouvés dans votre référentiel lié. Vous pouvez le faire en définissant un bloc de synchronisation dans le proton-ops fichier, comme dans l'exemple suivant.

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

Dans l'exemple précédent, frontend-svc est le nom du service et alphabeta,gamma,prod-one,prod-two, et prod-three sont les instances.

Le spec fichier peut contenir toutes les instances ou un sous-ensemble des instances définies dans le proton-ops fichier. Cependant, au minimum, l'instance doit être définie dans la branche et la spécification à partir de laquelle elle est synchronisée. Si les instances ne sont pas définies dans le proton-ops fichier, avec la branche et l'emplacement du spec fichier spécifiques, Service Sync ne créera ni ne mettra à jour ces instances.

Les exemples suivants montrent à quoi ressemblent les spec fichiers. N'oubliez pas que le proton-ops fichier est synchronisé à partir de ces spec fichiers.

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

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

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

Si une instance ne se synchronise pas et que le problème persiste lors de la tentative de synchronisation, appeler l'GetServiceInstanceSyncStatusAPI peut aider à résoudre le problème.

Note

Les clients qui utilisent Service Sync sont toujours soumis à AWS Proton certaines restrictions.

Bloqueurs

En synchronisant votre service à l'aide de AWS Proton Service Sync, vous pouvez mettre à jour vos spécifications de service et créer et mettre à jour des instances de service à partir de votre référentiel Git. Toutefois, il peut arriver que vous deviez mettre à jour un service ou une instance manuellement via le AWS Management Console ouAWS CLI.

AWS Protonpermet d'éviter de remplacer les modifications manuelles que vous apportez via le AWS Management Console ouAWS CLI, telles que la mise à jour d'une instance de service ou la suppression d'une instance de service. Pour ce faire, crée AWS Proton automatiquement un bloqueur de synchronisation des services en désactivant la synchronisation des services lorsqu'il détecte une modification manuelle.

Pour obtenir tous les bloqueurs associés à un service, vous devez procéder comme suit dans l'ordre pour chacun des bloqueurs serviceInstance associés au service :

  • Appelez l'getServiceSyncBlockerSummaryAPI avec uniquement leserviceName.

  • Appelez l'getServiceSyncBlockerSummaryAPI avec le serviceName etserviceInstanceName.

Cela renvoie la liste des bloqueurs les plus récents et l'état qui leur est associé. Si des bloqueurs sont marqués comme ACTIFS, vous devez les résoudre en appelant l'UpdateServiceSyncBlockerAPI avec le blockerId et resolvedReason pour chacun d'entre eux.

Si vous mettez à jour ou créez manuellement une instance de service, AWS Proton crée un bloqueur de synchronisation de service sur l'instance de service. AWS Protoncontinue de synchroniser toutes les autres instances de service, mais désactive la synchronisation de cette instance de service jusqu'à ce que le bloqueur soit résolu. Si vous supprimez une instance de service d'un service, AWS Proton crée un bloqueur de synchronisation de service sur le service. Cela AWS Proton empêche la synchronisation des instances de service jusqu'à ce que le bloqueur soit résolu.

Une fois que vous avez tous les bloqueurs actifs, vous devez les résoudre en appelant l'UpdateServiceSyncBlockerAPI avec le blockerId et resolvedReason pour chacun des bloqueurs actifs.

À l'aide duAWS Management Console, vous pouvez déterminer si la synchronisation d'un service est désactivée en accédant à l'onglet Synchronisation des services AWS Proton et en le sélectionnant. Si le service ou les instances de service sont bloqués, un bouton Activer apparaît. Pour activer la synchronisation des services, choisissez Activer.