Edición de un servicio - AWS Proton

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Edición de un servicio

Puede realizar las siguientes modificaciones en un servicio de AWS Proton.

  • Edite la descripción del servicio.

  • Para editar un servicio, agregue y quite las instancias de servicio.

Edición de la descripción del servicio

Puede utilizar la consola o la AWS CLI para editar la descripción de un servicio.

AWS Management Console

Edite un servicio mediante la consola tal y como se describe en los pasos siguientes.

En la lista de servicios.
  1. En la consola de AWS Proton, seleccione Configuración.

  2. En la lista de servicios, seleccione el botón de radio situado a la izquierda del servicio que desee actualizar.

  3. Elija Editar.

  4. En la página Configurar servicio, rellene el formulario y seleccione Siguiente.

  5. En la página Configurar ajustes personalizados, seleccione Siguiente.

  6. Revise sus cambios y seleccione Guardar cambios.

En la página de detalles del servicio.
  1. En la consola de AWS Proton, seleccione Configuración.

  2. En la lista de servicios, elija el nombre del servicio que desee editar.

  3. En la página de detalles del servicio, seleccione Editar.

  4. En la página Configurar servicio, rellene el formulario y seleccione Siguiente.

  5. En la página Configurar ajustes personalizados, rellene el formulario y seleccione Siguiente.

  6. Revise sus cambios y seleccione Guardar cambios.

AWS CLI

Edite una descripción como se muestra en el siguiente ejemplo de comando y respuesta de la CLI.

Comando:

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

Respuesta:

{ "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" } }

Edite un servicio para agregar o eliminar instancias de servicio

En el caso de un servicio de AWS Proton, puede agregar o eliminar instancias de servicio; para ello, debe enviar una especificación editada. Para que una solicitud se realice correctamente, se deben cumplir las siguientes condiciones:

  • Cuando se envía la solicitud de edición, el servicio y la canalización aún no se editan ni se eliminan.

  • La especificación editada no incluye ni las ediciones que modifican a la canalización del servicio ni las ediciones de las instancias de servicio existentes que no sean para eliminarse.

  • La especificación editada no elimina ninguna instancia de servicio existente que tenga un componente conectado. Para eliminar una instancia de servicio de este tipo, primero debe actualizar el componente para desconectarlo de su instancia de servicio. Para obtener más información sobre los componentes, consulte Componentes de AWS Proton.

Las instancias en las que se ha producido un error de eliminación son instancias de servicio en el estado DELETE_FAILED. Cuando se solicita editar un servicio, AWS Proton intenta eliminar automáticamente las instancias en las que se haya producido un error de eliminación como parte del proceso de edición. Si alguna de las instancias de servicio no se pudo eliminar, es posible que aún haya recursos asociados a dichas instancias, aunque no estén visibles desde la consola o la AWS CLI. Compruebe los recursos de la infraestructura de las instancias que no se pudieron eliminar y límpialos para que AWS Proton pueda eliminarlos.

Para conocer la cuota de instancias de servicio de un servicio, consulte Cuotas de AWS Proton. También debe mantener al menos una instancia de servicio para el servicio después de crearlo. Durante el proceso de actualización, AWS Proton hace un recuento de las instancias de servicio existentes y de las instancias que se van a añadir o eliminar. Las instancias que no se hayan podido eliminar se incluyen en este recuento y el usuario debe contabilizarlas al editar su spec.

Uso de la consola o la AWS CLI para agregar o eliminar instancias de servicio

AWS Management Console

Edite el servicio para agregar o eliminar instancias de servicio mediante la consola.

En la consola de AWS Proton

  1. En el panel de navegación, elija Servicios.

  2. Seleccione el servicio que desee editar.

  3. Elija Editar.

  4. (Opcional) En la página Configurar servicio, edite el nombre o la descripción del servicio y, a continuación, seleccione Siguiente.

  5. En la página Configurar ajustes personalizados, elija Eliminar para eliminar una instancia de servicio y elija Agregar nueva instancia para agregar una instancia de servicio y, por último, complete el formulario.

  6. Elija Siguiente.

  7. Revise las actualizaciones y seleccione Guardar cambios.

  8. Un modal le pedirá al usuario que verifique la eliminación de las instancias de servicio. Siga las instrucciones y seleccione Sí, eliminar.

  9. En la página de detalles del servicio, consulte los detalles del estado de su servicio.

AWS CLI

Agregue y elimine instancias de servicio con una spec editada, como se muestra en el siguiente ejemplo de comandos y respuestas de la AWS CLI.

Al utilizar la CLI, spec debe excluir las instancias de servicio que desee eliminar e incluir tanto las instancias de servicio que desee agregar como las instancias de servicio existentes que no se hayan marcado para su eliminación.

En la siguiente lista se muestra el ejemplo de spec anterior a la edición y una lista de las instancias de servicio implementadas según la especificación. Esta especificación se utilizó en el ejemplo anterior para editar la descripción de un servicio.

Especificación:

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"

El siguiente ejemplo de comando y respuesta de la CLI, list-service-instances, muestra las instancias activas antes de agregar o eliminar una instancia de servicio.

Comando:

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

Respuesta:

{ "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" } ] }

En la siguiente lista se muestra el ejemplo editado que spec utilizó para eliminar y agregar una instancia. Se elimina la instancia existente nombrada como my-instance y se agrega una nueva instancia nombrada como yet-another-instance.

Especificación:

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"

Puede utilizar "${Proton::CURRENT_VAL}" para indicar qué valores de parámetros desea conservar de la spec original, si los valores existen en la spec. Utilice get-service para ver la spec original de un servicio, tal y como se describe en Visualización de datos de servicio.

La siguiente lista muestra cómo puede utilizar "${Proton::CURRENT_VAL}" para asegurarse de que spec no incluya cambios en los valores de los parámetros para que las instancias de servicios existentes permanezcan.

Especificación:

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"

La siguiente lista muestra el comando y la respuesta de la CLI para editar el servicio.

Comando:

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

Respuesta:

{ "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" } }

El siguiente comando y respuesta de list-service-instances confirman que la instancia existente nombrada como my-instance se elimina y se agrega una nueva instancia nombrada como yet-another-instance.

Comando:

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

Respuesta:

{ "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" } ] }

Qué ocurre cuando se agregan o se eliminan instancias de servicio

Tras enviar una edición de servicio para eliminar y agregar instancias de servicio, AWS Proton realiza las siguientes acciones.

  • Establece el servicio en UPDATE_IN_PROGRESS.

  • Si el servicio tiene una canalización, establece su estado en IN_PROGRESS y bloquea las acciones de la canalización.

  • Establece las instancias de servicio que se van a eliminar como DELETE_IN_PROGRESS.

  • Bloquea las acciones del servicio.

  • Bloquea las acciones en instancias de servicio que estén marcadas para eliminarse.

  • Crea nuevas instancias de servicio.

  • Elimina las instancias que se hayan indicado para su eliminación.

  • Intenta eliminar las instancias cuya eliminación haya producido errores.

  • Una vez se agreguen o eliminen instancias por completo, vuelve a aprovisionar la canalización de servicios (si la hubiera), establece el servicio en ACTIVE y habilita las acciones del servicio y de la canalización.

AWS Proton intenta solucionar los modos de error de la siguiente manera.

  • Si no se pudieron crear una o más instancias de servicio, AWS Proton intenta desaprovisionar todas las instancias de servicio recién creadas y devuelve la spec al estado anterior. No elimina ninguna instancia de servicio ni modifica la canalización de ninguna manera.

  • Si no se pudieron eliminar una o más instancias de servicio, AWS Proton vuelve a aprovisionar la canalización sin las instancias eliminadas. La spec se actualiza para incluir las instancias agregadas y excluir las instancias que se marcaron para su eliminación.

  • Si la canalización no se aprovisiona correctamente, no se intentará revertirla y tanto el servicio como la canalización reflejarán un estado de actualización con errores.

Modificaciones de etiquetado y servicio

Al añadir instancias de servicio como parte de la edición del servicio, las etiquetas administradas por AWS se propagan a las nuevas instancias y los recursos aprovisionados y se crean automáticamente para ellos. Si crea etiquetas nuevas, esas etiquetas solo se aplicarán a las nuevas instancias. Las etiquetas administradas por el cliente del servicio existente también se propagan a las nuevas instancias. Para obtener más información, consulte Recursos y etiquetado de AWS Proton.