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

Grâce à la synchronisation des services, vous pouvez configurer et 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 avec 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 à mettre en place une infrastructure standardisée définie et gérée via AWS Proton des modèles. Il gère les définitions de services dans votre dépôt Git et réduit le changement d'outil. Par rapport à l'utilisation de Git uniquement, la standardisation des modèles et du déploiement vous AWS Proton permet de passer moins de temps à gérer votre infrastructure. AWS Proton offre également une transparence et une auditabilité accrues tant pour les développeurs que pour les équipes de plateforme.

AWS Proton fichier OPS

Le proton-ops fichier définit où se AWS Proton trouve le 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 le moment où il convient de 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 c'est le nom du servicealpha, etbeta,gamma,prod-one,prod-two,, prod-three sont les instances.

Le spec fichier peut être constitué de toutes les instances ou d'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 spec du 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, l'appel de l'GetServiceInstanceSyncStatusAPI peut aider à résoudre le problème.

Note

Les clients qui utilisent la synchronisation des services sont toujours soumis à AWS Proton des limites.

Bloqueurs

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

AWS Proton permet d'éviter de remplacer les modifications manuelles que vous apportez via le AWS Management Console ou AWS 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 effectuer les opérations suivantes 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 une liste des bloqueurs les plus récents et le statut qui leur est associé. Si des bloqueurs sont marqués comme ACTIFS, vous devez les résoudre en appelant l'UpdateServiceSyncBlockerAPI avec blockerId et resolvedReason pour chacun d'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 Proton continue 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 services sur le service. Cela AWS Proton empêche la synchronisation des instances de service tant que le bloqueur n'est pas 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 du AWS 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.