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 oserviceName
. -
Chamar a API
getServiceSyncBlockerSummary
com oserviceName
e oserviceInstanceName
.
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.