Editar um serviço - 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á.

Editar um serviço

Você pode fazer as seguintes edições em um serviço do AWS Proton.

  • Editar a descrição do serviço.

  • Edite um serviço adicionando e removendo instâncias de serviço.

Editar a descrição do serviço.

Você pode usar o console ou o AWS CLI para editar uma descrição de serviço.

AWS Management Console

Edite um serviço usando o console conforme descrito nas etapas a seguir.

Na lista de serviços.
  1. No console do AWS Proton, selecione Serviços.

  2. Na lista de serviços, escolha o botão de rádio à esquerda do serviço que deseja atualizar.

  3. Escolha Editar.

  4. Na página Configurar serviço, preencha o formulário e escolha Avançar.

  5. Na página Definir configurações personalizadas, escolha Avançar.

  6. Revise suas edições e escolha Salvar alterações.

Na página de detalhes do serviço.
  1. No console do AWS Proton, selecione Serviços.

  2. Na lista de serviços, escolha o nome do serviço que deseja editar.

  3. Na página de detalhes do serviço, escolha Editar.

  4. Na página Configurar serviço, preencha o formulário e escolha Avançar.

  5. Na página Configurar ajustes personalizados, preencha o formulário e escolha Avançar.

  6. Revise suas edições e escolha Salvar alterações.

AWS CLI

Edite uma descrição conforme mostrado no exemplo de comando e resposta da CLI a seguir.

Comando:

$ aws proton update-service \ --name "MySimpleService" \ --description "Edit by updating description"

Resposta:

{ "service": { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService", "branchName": "main", "createdAt": "2021-03-12T22:39:42.318000+00:00", "description": "Edit by updating description", "lastModifiedAt": "2021-03-12T22:44:21.975000+00:00", "name": "MySimpleService", "repositoryConnectionArn": "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "repositoryId": "my-repository/myorg-myapp", "status": "ACTIVE", "templateName": "fargate-service" } }

Editar um serviço para adicionar ou remover instâncias de serviço

Para um serviço do AWS Proton, você pode adicionar ou excluir instâncias de serviço enviando uma especificação editada. As seguintes condições devem ser satisfeitas para que uma solicitação seja bem-sucedida:

  • Seu serviço e pipeline ainda não estão sendo editados ou excluídos quando você envia a solicitação de edição.

  • Sua especificação editada não inclui edições que modifiquem o pipeline de serviço ou edições em instâncias de serviço existentes que não devem ser excluídas.

  • Sua especificação editada não remove nenhuma instância de serviço existente que tenha um componente anexado. Para excluir essa instância de serviço, você deve primeiro atualizar o componente para desanexá-lo de sua instância de serviço. Para obter mais informações sobre componentes, consulte Componentes do AWS Proton.

As instâncias com falha de exclusão são instâncias de serviço no estado DELETE_FAILED. Quando você solicita uma edição de serviço, o AWS Proton tenta remover as instâncias que falharam na exclusão para você, como parte do processo de edição. Se alguma de suas instâncias de serviço falhar na exclusão, ainda poderá haver recursos associados às instâncias, mesmo que eles não estejam visíveis no console ou no AWS CLI. Verifique os recursos de infraestrutura da instância que falharam na exclusão e limpe-os para que o AWS Proton possa removê-los para você.

Para a cota de instâncias de serviço de um serviço, consulte AWS ProtonCotas do. Você também deve manter pelo menos uma instância de serviço para seu serviço após sua criação. Durante o processo de atualização, o AWS Proton faz uma contagem das instâncias de serviço existentes e das instâncias a serem adicionadas ou removidas. As instâncias com falha de exclusão estão incluídas nessa contagem e você deve contabilizá-las ao editar suas spec.

Use o console ou o AWS CLI para adicionar ou remover instâncias de serviço

AWS Management Console

Edite seu serviço para adicionar ou remover instâncias de serviço usando o console.

No console do AWS Proton

  1. No painel de navegação, escolha Serviços.

  2. Selecione o serviço a ser editado.

  3. Escolha Editar.

  4. (Opcional) Na página Configurar serviço, edite o nome ou a descrição do serviço e escolha Avançar.

  5. Na página Definir configurações personalizadas, escolha Excluir para excluir uma instância de serviço e escolha Adicionar nova instância para adicionar uma instância de serviço e preencher o formulário.

  6. Escolha Next (Próximo).

  7. Revise a atualização e escolha Salvar alterações.

  8. Um modal solicita que você verifique a exclusão das instâncias de serviço. Siga as instruções e escolha Sim, excluir.

  9. Na página de detalhes do serviço, veja os detalhes do status do seu serviço.

AWS CLI

Adicione e exclua instâncias de serviço com uma spec editada, conforme mostrado nos AWS CLI exemplos de comandos e respostas a seguir.

Ao usar a CLI, sua você spec deve excluir as instâncias de serviço a serem excluídas e incluir as instâncias de serviço a serem adicionadas e as instâncias de serviço existentes que você não marcou para exclusão.

A lista a seguir mostra o exemplo de spec antes da edição e uma lista das instâncias de serviço implantadas pela especificação. Essa especificação foi usada no exemplo anterior para editar uma descrição de serviço.

Especificação:

proton: ServiceSpec pipeline: my_sample_pipeline_optional_input: "abc" my_sample_pipeline_required_input: "123" instances: - name: "my-instance" environment: "simple-env" spec: my_sample_service_instance_optional_input: "def" my_sample_service_instance_required_input: "456" - name: "my-other-instance" environment: "simple-env" spec: my_sample_service_instance_required_input: "789"

O exemplo de comando list-service-instances e resposta da CLI a seguir mostra as instâncias ativas antes de adicionar ou excluir uma instância de serviço.

Comando:

$ aws proton list-service-instances \ --service-name "MySimpleService"

Resposta:

{ "serviceInstances": [ { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/my-other-instance", "createdAt": "2021-03-12T22:39:42.318000+00:00", "deploymentStatus": "SUCCEEDED", "environmentName": "simple-env", "lastDeploymentAttemptedAt": "2021-03-12T22:39:43.109000+00:00", "lastDeploymentSucceededAt": "2021-03-12T22:39:43.109000+00:00", "name": "my-other-instance", "serviceName": "example-svc", "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "fargate-service" }, { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/my-instance", "createdAt": "2021-03-12T22:39:42.318000+00:00", "deploymentStatus": "SUCCEEDED", "environmentName": "simple-env", "lastDeploymentAttemptedAt": "2021-03-12T22:39:43.160000+00:00", "lastDeploymentSucceededAt": "2021-03-12T22:39:43.160000+00:00", "name": "my-instance", "serviceName": "example-svc", "serviceTemplateArn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service", "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "fargate-service" } ] }

A lista a seguir mostra o exemplo editado spec usado para excluir e adicionar uma instância. A instância existente chamada my-instance é removida e uma nova instância chamada yet-another-instance é adicionada.

Especificação:

proton: ServiceSpec pipeline: my_sample_pipeline_optional_input: "abc" my_sample_pipeline_required_input: "123" instances: - name: "my-other-instance" environment: "simple-env" spec: my_sample_service_instance_required_input: "789" - name: "yet-another-instance" environment: "simple-env" spec: my_sample_service_instance_required_input: "789"

Você pode usar "${Proton::CURRENT_VAL}" para indicar quais valores de parâmetros devem ser preservados da spec original, se os valores existirem na spec. Use get-service para visualizar a spec original de um serviço, conforme descrito em Exibir dados do serviço.

A lista a seguir mostra como você pode usar "${Proton::CURRENT_VAL}" para garantir que sua spec não inclua alterações nos valores dos parâmetros para que as instâncias de serviços existentes permaneçam.

Especificação:

proton: ServiceSpec pipeline: my_sample_pipeline_optional_input: "${Proton::CURRENT_VAL}" my_sample_pipeline_required_input: "${Proton::CURRENT_VAL}" instances: - name: "my-other-instance" environment: "simple-env" spec: my_sample_service_instance_required_input: "${Proton::CURRENT_VAL}" - name: "yet-another-instance" environment: "simple-env" spec: my_sample_service_instance_required_input: "789"

A próxima listagem mostra o comando e a resposta da CLI para editar o serviço.

Comando:

$ aws proton update-service --name "MySimpleService" \ --description "Edit by adding and deleting a service instance" \ --spec "file://spec.yaml"

Resposta:

{ "service": { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService", "branchName": "main", "createdAt": "2021-03-12T22:39:42.318000+00:00", "description": "Edit by adding and deleting a service instance", "lastModifiedAt": "2021-03-12T22:55:48.169000+00:00", "name": "MySimpleService", "repositoryConnectionArn": "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "repositoryId": "my-repository/myorg-myapp", "status": "UPDATE_IN_PROGRESS", "templateName": "fargate-service" } }

O comando list-service-instances e a resposta a seguir confirmam que a instância existente chamada my-instance foi removida e uma nova instância chamada yet-another-instance foi adicionada.

Comando:

$ aws proton list-service-instances \ --service-name "MySimpleService"

Resposta:

{ "serviceInstances": [ { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/yet-another-instance", "createdAt": "2021-03-12T22:39:42.318000+00:00", "deploymentStatus": "SUCCEEDED", "environmentName": "simple-env", "lastDeploymentAttemptedAt": "2021-03-12T22:56:01.565000+00:00", "lastDeploymentSucceededAt": "2021-03-12T22:56:01.565000+00:00", "name": "yet-another-instance", "serviceName": "MySimpleService", "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "fargate-service" }, { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/my-other-instance", "createdAt": "2021-03-12T22:39:42.318000+00:00", "deploymentStatus": "SUCCEEDED", "environmentName": "simple-env", "lastDeploymentAttemptedAt": "2021-03-12T22:39:43.109000+00:00", "lastDeploymentSucceededAt": "2021-03-12T22:39:43.109000+00:00", "name": "my-other-instance", "serviceName": "MySimpleService", "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "fargate-service" } ] }

O que acontece quando você adiciona ou remove instâncias de serviço

Depois de enviar uma edição de serviço para excluir e adicionar instâncias de serviço, o AWS Proton executa as seguintes ações.

  • Configura o serviço em UPDATE_IN_PROGRESS

  • Se o serviço tiver um pipeline, definirá seu status como IN_PROGRESS e bloqueará as ações do pipeline.

  • Define todas as instâncias de serviço que devem ser excluídas para DELETE_IN_PROGRESS.

  • Bloqueia as ações do serviço.

  • Bloqueia ações em instâncias de serviço marcadas para exclusão.

  • Cria novas instâncias de serviço.

  • Exclui instâncias que você listou para exclusão.

  • Tenta remover instâncias cuja exclusão falhou.

  • Depois que as adições e exclusões forem concluídas, reprovisiona o pipeline de serviços (se houver), configura seu serviço para ACTIVE e habilita ações de serviço e pipeline.

O AWS Proton tenta re-mediar os modos de falha da seguinte forma.

  • Se uma ou mais instâncias de serviço falharem na criação, o AWS Proton tenta desprovisionar todas as instâncias de serviço recém-criadas e reverte a spec para o estado anterior. Ele não exclui nenhuma instância de serviço e não modifica o pipeline de forma alguma.

  • Se uma ou mais instâncias de serviço não forem excluídas, o AWS Proton reprovisiona o pipeline sem as instâncias excluídas. O spec é atualizado para incluir as instâncias adicionadas e excluir as instâncias que foram marcadas para exclusão.

  • Se o pipeline falhar no provisionamento, não haverá uma tentativa de reversão e tanto o serviço quanto o pipeline refletirão um estado de falha na atualização.

Marcação e edições de serviço

Quando você adiciona instâncias de serviço como parte da edição do serviço, as tags gerenciadas pelo AWS se propagam e são criadas automaticamente para as novas instâncias e recursos provisionados. Se você criar novas tags, essas tags serão aplicadas somente às novas instâncias. As tags de serviço gerenciadas pelo cliente existentes também se propagam para as novas instâncias. Para obter mais informações, consulte Recursos do AWS Proton e marcação.