Cómo AWS Proton aprovisiona la infraestructura - 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.

Cómo AWS Proton aprovisiona la infraestructura

AWS Proton puede aprovisionar la infraestructura de varias maneras:

  • Aprovisionamiento administrado por AWS: AWS Proton llama al motor de aprovisionamiento en su nombre. Este método solo admite paquetes de plantillas de AWS CloudFormation. Para obtener más información, consulte AWS CloudFormation Archivos iAC.

  • Aprovisionamiento de CodeBuild: AWS Proton utiliza AWS CodeBuild para ejecutar los comandos del intérprete de comandos que proporcione el usuario. Los comandos pueden leer las entradas que proporciona AWS Proton, y son responsables de aprovisionar o desaprovisionar la infraestructura y generar valores de salida. Un paquete de plantillas para este método incluye los comandos en un archivo de manifiesto y todos los programas, scripts u otros archivos que estos comandos puedan necesitar.

    Como ejemplo del uso del aprovisionamiento de CodeBuild, puede incluir código que utilice el AWS Cloud Development Kit (AWS CDK) para aprovisionar recursos de AWS y un manifiesto que instale el CDK y ejecute su código de CDK.

    Para obtener más información, consulte CodeBuild paquete de plantillas de aprovisionamiento.

    nota

    Puede utilizar el aprovisionamiento de CodeBuild con entornos y servicios. En este momento, no puede aprovisionar componentes de esta forma.

  • Aprovisionamiento autoadministrado: AWS Proton envía una solicitud de extracción (PR) a un repositorio que el usuario proporcione, donde su propio sistema de implementación de infraestructuras ejecute el proceso de aprovisionamiento. Este método solo admite paquetes de plantillas de Terraform. Para obtener más información, consulte Archivos iAC de Terraform.

AWS Proton determina y establece el método de aprovisionamiento para cada entorno y servicio por separado. Al crear o actualizar un entorno o un servicio, AWS Proton examina el paquete de plantillas que el usuario proporciona y determina el método de aprovisionamiento que indica el paquete de plantillas. A nivel del entorno, el usuario proporciona los parámetros que el entorno y sus posibles servicios podrían necesitar para sus métodos de aprovisionamiento: roles de AWS Identity and Access Management (IAM), una conexión de cuentas de entorno o un repositorio de infraestructura.

Los desarrolladores que utilizan AWS Proton para aprovisionar un servicio tienen la misma experiencia independientemente del método de aprovisionamiento. Los desarrolladores no necesitan conocer el método de aprovisionamiento ni tienen que cambiar nada en el proceso de aprovisionamiento del servicio. La plantilla de servicio establece el método de aprovisionamiento y cada entorno en el que un desarrollador implementa el servicio proporciona los parámetros necesarios para el aprovisionamiento de las instancias de servicio.

El siguiente diagrama resume algunas de las características principales de los distintos métodos de aprovisionamiento. En las secciones que siguen a la tabla se proporcionan detalles sobre cada método.

Método de aprovisionamiento Plantillas Aprovisionado por Estado registrado por

Administrado por AWS

manifiesto, esquema, archivo de IaC (CloudFormation)

AWS Proton (a través de CloudFormation)

AWS Proton (a través de CloudFormation)

CodeBuild

manifiesto (con comandos), esquema, dependencias de comandos (por ejemplo, código del AWS CDK)

AWS Proton (a través de CodeBuild)

AWS Proton (los comandos del usuario devuelven el estado a través de CodeBuild)

autoadministrado

manifiesto, esquema, archivos de IaC (Terraform)

Código del usuario (a través de acciones de Git)

Código del usuario (transferido a AWS a través de una llamada a la API)

¿Cómo funciona el aprovisionamiento administrado por AWS?

Cuando un entorno o un servicio utiliza el aprovisionamiento administrado por AWS, la infraestructura se aprovisiona de la siguiente manera:

  1. Un cliente de AWS Proton (un administrador o un desarrollador) crea el recurso de AWS Proton (un entorno o un servicio). El cliente selecciona una plantilla para el recurso y proporciona los parámetros necesarios. Para obtener más información, consulte la siguiente sección: Consideraciones sobre el aprovisionamiento administrado por AWS.

  2. AWS Proton representa una plantilla completa de AWS CloudFormation para aprovisionar el recurso.

  3. AWS Proton llama a AWS CloudFormation para iniciar el aprovisionamiento mediante la plantilla representada.

  4. AWS Proton monitorea continuamente la implementación de AWS CloudFormation.

  5. Cuando se completa el aprovisionamiento, AWS Proton informa de los errores en caso de error y captura las salidas del aprovisionamiento, como el ID de la VPC de Amazon, en caso de que se realice correctamente.

En el siguiente diagrama se muestra que AWS Proton se encarga directamente de la mayoría de estos pasos.

Diagrama que ilustra el aprovisionamiento administrado por AWS en AWS Proton

Consideraciones sobre el aprovisionamiento administrado por AWS

  • Rol de aprovisionamiento de la infraestructura: cuando un entorno o alguna de las instancias de servicio que se ejecutan en él pueda utilizar el aprovisionamiento administrado por AWS, el administrador debe configurar un rol de IAM (directamente o como parte de la conexión de una cuenta de entorno de AWS Proton). AWS Proton utiliza este rol para aprovisionar la infraestructura de estos recursos de aprovisionamiento administrados por AWS. El rol debe tener permisos para utilizar AWS CloudFormation con el fin de crear todos los recursos que incluyan las plantillas de dichos recursos.

    Para obtener más información, consulte Roles de IAM y AWS Proton IAMejemplos de políticas de roles de servicio.

  • Aprovisionamiento de servicios: cuando un desarrollador implementa una instancia de servicio que utiliza el aprovisionamiento administrado por AWS en el entorno, AWS Proton utiliza el rol proporcionado a ese entorno para aprovisionar la infraestructura de la instancia de servicio. Los desarrolladores no ven este rol y no pueden cambiarlo.

  • Servicio con canalización: una plantilla de servicio que utilice el aprovisionamiento administrado por AWS puede incluir una definición de canalización escrita en el esquema YAML de AWS CloudFormation. AWS Proton también crea la canalización mediante una llamada a AWS CloudFormation. El rol que utiliza AWS Proton para crear una canalización es independiente del rol de cada entorno individual. Este rol se proporciona en AWS Proton por separado, solo una vez a nivel de cuenta de AWS, y se utiliza para aprovisionar y administrar todas las canalizaciones administradas por AWS. Este rol debe tener permisos para crear canalizaciones y otros recursos que las canalizaciones necesiten.

    Los siguientes procedimientos muestran cómo proporcionar el rol de canalización a AWS Proton.

    AWS Proton console
    Para proporcionar el rol de canalización
    1. En la consola de AWS Proton, en el panel de navegación, seleccione Configuración > Configuración de la cuenta y, a continuación, seleccione Configurar.

    2. Utilice la sección Rol administrado por AWS de la canalización para configurar un rol de canalización nuevo o existente para el aprovisionamiento administrado por AWS.

    AWS Proton API
    Para proporcionar el rol de canalización
    1. Utilice la acción de la API UpdateAccountSettings.

    2. Proporciona el nombre de recurso de Amazon (ARN) de su rol de servicio de canalización en el parámetro pipelineServiceRoleArn.

    AWS CLI

    Para proporcionar el rol de canalización

    Ejecute el siguiente comando:

    $ aws proton update-account-settings \ --pipeline-service-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

Cómo funciona el aprovisionamiento de CodeBuild

Cuando un entorno o un servicio utiliza el aprovisionamiento de CodeBuild, la infraestructura se aprovisiona de la siguiente manera:

  1. Un cliente de AWS Proton (un administrador o un desarrollador) crea el recurso de AWS Proton (un entorno o un servicio). El cliente selecciona una plantilla para el recurso y proporciona los parámetros necesarios. Para obtener más información, consulte la siguiente sección: Consideraciones sobre el aprovisionamiento de CodeBuild.

  2. AWS Proton representa un archivo de entrada con los valores de los parámetros de entrada para aprovisionar el recurso.

  3. AWS Proton llama a CodeBuild para iniciar un trabajo. El trabajo de CodeBuild ejecuta los comandos del intérprete de comandos del cliente especificados en la plantilla. Estos comandos proporcionan la infraestructura deseada y, opcionalmente, leen los valores de entrada.

  4. Cuando se completa el aprovisionamiento, el comando final del cliente devuelve el estado del aprovisionamiento a CodeBuild y llama a la acción de la API de AWS Proton NotifyResourceDeploymentStatusChange para proporcionar salidas, como el ID de la VPC de Amazon, si existiera alguno.

    importante

    Asegúrese de que los comandos devuelvan correctamente el estado de aprovisionamiento a CodeBuild y proporcionen las salidas. Si no lo hacen, AWS Proton no podrá realizar un seguimiento adecuado del estado del aprovisionamiento y no podrá proporcionar las salidas correctas a las instancias de servicio.

El siguiente diagrama ilustra los pasos que AWS Proton lleva a cabo y los pasos que realizan los comandos del usuario en un trabajo de CodeBuild.

Diagrama que ilustra el aprovisionamiento basado en CodeBuild en AWS Proton

Consideraciones sobre el aprovisionamiento de CodeBuild

  • Rol de aprovisionamiento de la infraestructura: cuando un entorno o cualquiera de las instancias de servicio que se ejecutan en él pueda utilizar el aprovisionamiento basado en CodeBuild, el administrador debe configurar un rol de IAM (directamente o como parte de una conexión de cuenta de entorno de AWS Proton). AWS Proton utiliza este rol para aprovisionar la infraestructura de estos recursos de aprovisionamiento de CodeBuild. El rol debe tener permisos para utilizar CodeBuild a fin de crear todos los recursos que aprovisionan los comandos del usuario en las plantillas de dichos recursos.

    Para obtener más información, consulte Roles de IAM y AWS Proton IAMejemplos de políticas de roles de servicio.

  • Aprovisionamiento de servicios: cuando un desarrollador implementa una instancia de servicio que utiliza el aprovisionamiento de CodeBuild en el entorno, AWS Proton utiliza el rol proporcionado a ese entorno para aprovisionar la infraestructura de la instancia de servicio. Los desarrolladores no ven este rol y no pueden cambiarlo.

  • Servicio con canalización: una plantilla de servicio que utiliza el aprovisionamiento de CodeBuild puede incluir comandos para aprovisionar una canalización. AWS Proton también crea la canalización mediante llamadas a CodeBuild. El rol que utiliza AWS Proton para crear una canalización es independiente del rol de cada entorno individual. Este rol se proporciona a AWS Proton por separado, solo una vez a nivel de cuenta de AWS, y se utiliza para aprovisionar y administrar todas las canalizaciones basadas en CodeBuild. Este rol debe tener permisos para crear canalizaciones y otros recursos que las canalizaciones necesiten.

    Los siguientes procedimientos muestran cómo proporcionar el rol de canalización a AWS Proton.

    AWS Proton console
    Para proporcionar el rol de canalización
    1. En la consola de AWS Proton, en el panel de navegación, seleccione Configuración > Configuración de la cuenta y, a continuación, seleccione Configurar.

    2. Consulte la sección Roles de aprovisionamiento de canalizaciones de CodeBuild para configurar un rol de canalización nuevo o existente para el aprovisionamiento de CodeBuild.

    AWS Proton API
    Para proporcionar el rol de canalización
    1. Utilice la acción de la API UpdateAccountSettings.

    2. Proporciona el nombre de recurso de Amazon (ARN) de su rol de servicio de canalización en el parámetro pipelineCodebuildRoleArn.

    AWS CLI

    Para proporcionar el rol de canalización

    Ejecute el siguiente comando:

    $ aws proton update-account-settings \ --pipeline-codebuild-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

Cómo funciona el aprovisionamiento autoadministrado

Cuando un entorno se configura para utilizar el aprovisionamiento autoadministrado, la infraestructura se aprovisiona de la siguiente manera:

  1. Un cliente de AWS Proton (un administrador o un desarrollador) crea el recurso de AWS Proton (un entorno o un servicio). El cliente selecciona una plantilla para el recurso y proporciona los parámetros necesarios. Para un entorno, el cliente también proporciona un repositorio de infraestructura vinculado. Para obtener más información, consulte la siguiente sección: Consideraciones sobre el aprovisionamiento autoadministrado.

  2. AWS Proton representa una plantilla de Terraform completa. Consta de uno o más archivos de Terraform, posiblemente en varias carpetas, y un archivo de variables de .tfvars. AWS Proton escribe los valores de los parámetros proporcionados en la llamada de creación del recurso en este archivo de variables.

  3. AWS Proton envía una solicitud de extracción (PR) al repositorio de infraestructura con la plantilla de Terraform representada.

  4. Cuando el cliente (administrador o desarrollador) fusiona la PR, la automatización del cliente activa el motor de aprovisionamiento para comenzar a aprovisionar la infraestructura mediante la plantilla fusionada.

    nota

    Si el cliente (administrador o desarrollador) cierra la solicitud de extracción (PR), AWS Proton la reconocerá como cerrada y marcará la implementación como cancelada.

  5. Cuando se completa el aprovisionamiento, la automatización del cliente llama a la acción de la API de AWS Proton NotifyResourceDeploymentStatusChange para indicar que se ha completado y proporcionar tanto el estado (éxito o error) como las salidas, como el ID de la VPC de Amazon, si existiera alguna.

    importante

    Asegúrese de que el código de automatización vuelva a llamar a AWS Proton con el estado del aprovisionamiento y las salidas. Si no es así, AWS Proton podría considerar que el aprovisionamiento está pendiente durante más tiempo del debido y seguir mostrando el estado En curso.

El siguiente diagrama ilustra los pasos que AWS Proton lleva a cabo y los pasos que lleva a cabo su propio sistema de aprovisionamiento.

Diagrama que ilustra el aprovisionamiento autoadministrado en AWS Proton

Consideraciones sobre el aprovisionamiento autoadministrado

  • Repositorio de infraestructura: cuando un administrador configura un entorno para el aprovisionamiento autoadministrado, debe proporcionar un repositorio de infraestructura vinculado. AWS Proton envía las solicitudes de extracción (PR) a este repositorio para aprovisionar la infraestructura del entorno y todas las instancias de servicio que se implementan en él. La acción de automatización del repositorio propiedad del cliente debe asumir un rol de IAM con permisos para crear todos los recursos que incluyen las plantillas de servicio y entorno, y una identidad que refleje la cuenta de AWS de destino. Para ver un ejemplo de la acción de GitHub que asume un rol, consulte Asumir un rol en la documentación de la Acción “Configurar credenciales de AWS” para acciones de GitHub.

  • Permisos: el código de aprovisionamiento del usuario debe autenticarse con una cuenta según sea necesario (por ejemplo, autenticarse en una cuenta de AWS) y proporcionar una autorización de aprovisionamiento de recursos (por ejemplo, proporcionar un rol).

  • Aprovisionamiento de servicios: cuando un desarrollador implementa una instancia de servicio que utiliza el aprovisionamiento autoadministrado en el entorno, AWS Proton envía una solicitud de extracción (PR) al repositorio asociado al entorno con el fin de aprovisionar la infraestructura para la instancia de servicio. Los desarrolladores no verán el repositorio ni podrán cambiarlo.

    nota

    Los desarrolladores que crean servicios utilizan el mismo proceso independientemente del método de aprovisionamiento, y la diferencia se extrae de ellos. Sin embargo, con el aprovisionamiento autoadministrado, los desarrolladores pueden experimentar una respuesta más lenta, ya que tienen que esperar a que alguien (que podría no ser ellos mismos) fusione la PR en el repositorio de infraestructura para poder iniciar el aprovisionamiento.

  • Servicio con canalización: una plantilla de servicio para un entorno con aprovisionamiento autoadministrado puede incluir una definición de canalización (por ejemplo, una canalización de AWS CodePipeline) escrita en HCL de Terraform. Para permitir que AWS Proton aprovisione estas canalizaciones, un administrador debe proporcionar un repositorio de canalizaciones vinculado a AWS Proton. Al aprovisionar una canalización, la acción de automatización propiedad del cliente en el repositorio debe asumir un rol de IAM con permisos para aprovisionar la canalización y una identidad que refleje la cuenta de AWS de destino. El repositorio y el rol de la canalización son independientes de los que se utilizan para cada entorno individual. El repositorio vinculado se proporciona a AWS Proton por separado, solo una vez a nivel de cuenta de AWS, y se utiliza para aprovisionar y administrar todos los procesos. El rol debe tener permisos para crear canalizaciones y otros recursos que las canalizaciones necesiten.

    Los siguientes procedimientos muestran cómo proporcionar el repositorio y el rol de canalización a AWS Proton.

    AWS Proton console
    Para proporcionar el rol de canalización
    1. En la consola de AWS Proton, en el panel de navegación, seleccione Configuración > Configuración de la cuenta y, a continuación, seleccione Configurar.

    2. Utilice la sección Repositorio de canalización de CI/CD para configurar un enlace de repositorio nuevo o existente.

    AWS Proton API
    Para proporcionar el rol de canalización
    1. Utilice la acción de la API UpdateAccountSettings.

    2. Proporciona el proveedor, el nombre y la ramificación del repositorio de la canalización en el parámetro pipelineProvisioningRepository.

    AWS CLI

    Para proporcionar el rol de canalización

    Ejecute el siguiente comando:

    $ aws proton update-account-settings \ --pipeline-provisioning-repository \ "provider=GITHUB,name=my-pipeline-repo-name,branch=my-branch"
  • Eliminación de los recursos aprovisionados de forma autoadministrada: los módulos de Terraform pueden incluir elementos de configuración necesarios para el funcionamiento de Terraform, además de definiciones de recursos. Por lo tanto, AWS Proton no puede eliminar todos los archivos de Terraform de un entorno o instancia de servicio. En su lugar, AWS Proton marca los archivos para su eliminación y actualiza una marca en los metadatos de la solicitud de extracción (PR). La automatización puede leer esa marca y utilizarla para activar un comando de destrucción de Terraform.