Configurações de sincronização de serviços - AWS Proton

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurações de sincronização de serviços

Com a sincronização de serviços, você pode configurar e implantar seus serviços do AWS Proton usando o Git. Você pode usar a sincronização de serviço para gerenciar implantações e atualizações iniciais do seu serviço do AWS Proton com uma configuração definida em um repositório Git. Por meio do Git, você pode usar atributos como controle de versão e pull requests para configurar, gerenciar e implantar seus serviços. O Service Sync combina o AWS Proton com o Git para ajudar você a provisionar uma infraestrutura padronizada que é definida e gerenciada por meio de modelos do AWS Proton. Ele gerencia as definições de serviço em seu repositório Git e reduz a troca de ferramentas. Em comparação com o uso exclusivo do Git, a padronização de modelos e a implantação no AWS Proton ajudam você a gastar menos tempo gerenciando sua infraestrutura. O AWS Proton também oferece maior transparência e auditabilidade para desenvolvedores e equipes de plataforma.

Arquivo OPS do AWS Proton

O arquivo do proton-ops define onde o AWS Proton encontra o arquivo de especificação usado para atualizar sua instância de serviço. Ela também define em qual ordem atualizar as instâncias de serviço e quando promover mudanças de uma instância para outra.

O arquivo do proton-ops suporta a sincronização de uma instância de serviço usando o arquivo de especificação, ou vários arquivos de especificação, encontrados no seu repositório vinculado. Você pode fazer isso definindo um bloco de sincronização no arquivo proton-ops, como no exemplo a seguir.

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

No exemplo anterior, frontend-svc é o nome do serviço, e alpha, beta, gamma, prod-one, prod-two, e prod-three são as instâncias.

O arquivo de spec pode ser todas as instâncias ou um subconjunto das instâncias definidas no arquivo de proton-ops. No entanto, no mínimo, ele deve ter a instância definida na ramificação e a especificação a partir da qual está sincronizando. Se as instâncias não estiverem definidas no arquivo de proton-ops, com a ramificação e o local do arquivo de spec específicos, a sincronização de serviços não criará nem atualizará essas instâncias.

Os exemplos a seguir mostram a aparência dos arquivos de spec. Lembre-se de que o arquivo de proton-ops é sincronizado a partir desses arquivos de spec.

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

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

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

Se uma instância não sincronizar e houver um problema contínuo ao tentar sincronizá-la, chamar a API de GetServiceInstanceSyncStatus pode ajudar a resolver o problema.

nota

Os clientes que usam o service sync ainda estão restritos por limites do AWS Proton.

Blockers

Ao sincronizar seu serviço usando o sincronizador de serviço do AWS Proton, você pode atualizar sua especificação de serviço e criar e atualizar instâncias de serviço a partir do seu repositório Git. No entanto, pode haver momentos em que você precise atualizar um serviço ou instância manualmente por meio do AWS Management Console ou AWS CLI.

O AWS Proton ajuda a evitar a substituição de quaisquer alterações manuais feitas por meio do AWS Management Console ou AWS CLI, como atualizar uma instância de serviço ou excluir uma instância de serviço. Para isso, o AWS Proton cria automaticamente um bloqueador de sincronização de serviços desativando a sincronização de serviços ao detectar uma alteração manual.

Para obter todos os bloqueadores associados a um serviço, você deve fazer o seguinte na ordem de cada serviceInstance associada ao serviço:

  • Você só deve chamar a getServiceSyncBlockerSummary API com o serviceName.

  • Chamar a API getServiceSyncBlockerSummary com o serviceName e o serviceInstanceName.

Ela retorna uma lista dos bloqueadores mais recentes e o status associado a eles. Se algum bloqueador estiver marcado como ATIVO, você deverá resolvê-lo chamando a API UpdateServiceSyncBlocker com blockerId e resolvedReason para cada um.

Se você atualizar ou criar manualmente uma instância de serviço, o AWS Proton cria um bloqueador de sincronização de serviço na instância de serviço. O AWS Proton continua sincronizando todas as outras instâncias de serviço, mas desativa a sincronização dessa instância de serviço até que o bloqueador seja resolvido. Se você excluir uma instância de serviço de um serviço, o AWS Proton cria um bloqueador de sincronização de serviço no serviço. Isso impede que o AWS Proton sincronize qualquer uma das instâncias do serviço até que o bloqueador seja resolvido.

Depois de ter todos os bloqueadores ativos, você deve resolvê-los chamando a API UpdateServiceSyncBlocker com blockerId e resolvedReason para cada um dos bloqueadores ativos.

Usando o AWS Management Console, você pode determinar se uma sincronização de serviço está desativada navegando até o AWS Proton e escolhendo a guia Sincronização de serviços. Se o serviço ou as instâncias do serviço estiverem bloqueados, um botão Habilitar será exibido. Para habilitar a sincronização de serviços, escolha Habilitar.