¿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:

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

  • CodeBuild aprovisionamiento: se AWS Proton utiliza AWS CodeBuild para ejecutar los comandos de shell que usted proporciona. Tus comandos pueden leer las entradas que AWS Proton proporcionan, 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 CodeBuild aprovisionamiento, puedes incluir un código que lo utilice AWS Cloud Development Kit (AWS CDK) para aprovisionar AWS recursos y un manifiesto que instale la CDK y ejecute el código de la CDK.

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

    nota

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

  • Aprovisionamiento autogestionado: AWS Proton envía una solicitud de cambios (PR) a un repositorio que tú proporciones, donde tu propio sistema de despliegue de infraestructuras ejecuta 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 proporciona y determina el método de aprovisionamiento que indica el paquete de plantillas. A nivel del entorno, usted proporciona los parámetros que el entorno y sus posibles servicios podrían necesitar para sus métodos de aprovisionamiento: funciones de AWS Identity and Access Management IAM, una conexión de cuentas de entorno o un repositorio de infraestructura.

Los desarrolladores que suelen AWS Proton 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.

En el siguiente diagrama, se resumen 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 rastreado por

Administradas por AWS

manifiesto, esquema, archivo IAC () CloudFormation

AWS Proton (a través de CloudFormation)

AWS Proton (a través CloudFormation)

CodeBuild

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

AWS Proton (a través de CodeBuild)

AWS Proton (sus comandos devuelven el estado a través de CodeBuild)

autoadministrado

manifiesto, esquema, archivos IaC (Terraform)

Tu código (a través de acciones de Git)

Tu código (transferido a AWS través de una llamada a la API)

¿Cómo funciona AWS el aprovisionamiento gestionado

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

  1. Un AWS Proton cliente (un administrador o un desarrollador) crea el AWS Proton recurso (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 gestionado AWS.

  2. AWS Proton muestra una AWS CloudFormation plantilla completa para el aprovisionamiento del recurso.

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

  4. AWS Proton monitorea continuamente el AWS CloudFormation despliegue.

  5. Cuando se completa el aprovisionamiento, AWS Proton informa de los errores en caso de error y captura los resultados del aprovisionamiento, como el ID de Amazon VPC, en caso de éxito.

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

Diagrama que ilustra el AWS aprovisionamiento administrado en AWS Proton

Consideraciones sobre el aprovisionamiento gestionado AWS

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

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

  • Aprovisionamiento de servicios: cuando un desarrollador implementa una instancia de servicio que utiliza el aprovisionamiento AWS administrado en el entorno, AWS Proton utiliza la función proporcionada 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 AWS administrado puede incluir una definición de canalización escrita en el esquema AWS CloudFormation YAML. AWS Proton también crea la canalización mediante una llamada. AWS CloudFormation La función que se AWS Proton utiliza para crear una canalización es independiente de la función de cada entorno individual. Esta función se proporciona AWS Proton por separado, solo una vez a nivel de AWS cuenta, y se usa para aprovisionar y administrar todas las canalizaciones AWS administradas. Esta función debe tener permisos para crear canalizaciones y otros recursos que tus canalizaciones necesiten.

    Los siguientes procedimientos muestran cómo proporcionar la función 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 Función AWS gestionada por canalización para configurar una función de canalización nueva o existente para el aprovisionamiento AWS gestionado.

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

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

    AWS CLI

    Para proporcionar el rol de canalización

    Ejecuta el siguiente comando:

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

Cómo funciona el CodeBuild aprovisionamiento

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

  1. Un AWS Proton cliente (un administrador o un desarrollador) crea el AWS Proton recurso (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 CodeBuild .

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

  3. AWS Proton llamadas CodeBuild para iniciar un trabajo. El CodeBuild trabajo ejecuta los comandos del shell de 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 CodeBuild e invoca la acción de la NotifyResourceDeploymentStatusChange AWS Proton API para proporcionar resultados, como el ID de Amazon VPC, si existe alguno.

    importante

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

El siguiente diagrama ilustra los pasos que se llevan a AWS Proton cabo y los pasos que realizan los comandos dentro de un CodeBuild trabajo.

Diagrama que ilustra el aprovisionamiento CodeBuild basado en AWS Proton

Consideraciones sobre el aprovisionamiento CodeBuild

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

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

  • Aprovisionamiento de servicios: cuando un desarrollador implementa una instancia de servicio que utiliza el CodeBuild aprovisionamiento en el entorno, AWS Proton utiliza la función proporcionada 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 CodeBuild aprovisionamiento puede incluir comandos para aprovisionar una canalización. AWS Proton también crea la canalización mediante una llamada CodeBuild. La función que se AWS Proton utiliza para crear una canalización es independiente de la función de cada entorno individual. Esta función se proporciona AWS Proton por separado, solo una vez a nivel de AWS cuenta, y se usa para aprovisionar y administrar todas las canalizaciones CodeBuild basadas en datos. Esta función debe tener permisos para crear canalizaciones y otros recursos que tus canalizaciones necesiten.

    Los siguientes procedimientos muestran cómo proporcionar la función 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 de funciones de aprovisionamiento de canalizaciones de Codebuild para configurar una función de aprovisionamiento de canalización nueva o existente. CodeBuild

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

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

    AWS CLI

    Para proporcionar el rol de canalización

    Ejecuta 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 autogestionado

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

  1. Un AWS Proton cliente (un administrador o un desarrollador) crea el AWS Proton recurso (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 .tfvars archivo de variables. 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 un PR al repositorio de infraestructura con la plantilla Terraform renderizada.

  4. Cuando el cliente (administrador o desarrollador) fusiona el 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 el PR, lo AWS Proton reconoce como cerrado y marca el despliegue como cancelado.

  5. Cuando se completa el aprovisionamiento, la automatización del cliente llama a la NotifyResourceDeploymentStatusChange AWS Proton API a la acción para indicar que se ha completado, proporcionar el estado (correcto o incorrecto) y proporcionar resultados, como el ID de Amazon VPC, si existe alguno.

    importante

    Asegúrese de que el código de automatización vuelva a llamar AWS Proton con el estado del aprovisionamiento y los resultados. Si no es así, AWS Proton podrías 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 autogestionado en AWS Proton

Consideraciones sobre el aprovisionamiento autoadministrado

  • Repositorio de infraestructura: cuando un administrador configura un entorno para el aprovisionamiento autogestionado, debe proporcionar un repositorio de infraestructura vinculado. AWS Proton se envía PRs 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 una función 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 destino. AWS Para ver un ejemplo de GitHub acción que asume un rol, consulte Asumir un rol en la documentación de Action for GitHub Actions «Configurar AWS credenciales».

  • Permisos: el código de aprovisionamiento debe autenticarse con una cuenta según sea necesario (por ejemplo, autenticarse en una AWS cuenta) 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 autogestionado en el entorno, AWS Proton envía un PR al repositorio asociado al entorno para 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 autogestionado puede incluir una definición de canalización (por ejemplo, una AWS CodePipeline canalización), escrita en Terraform HCL. Para poder AWS Proton aprovisionar estas canalizaciones, un administrador proporciona un repositorio de canalizaciones enlazado a. AWS Proton Al aprovisionar una canalización, la acción de automatización propiedad del cliente en el repositorio debe asumir una función de IAM con permisos para aprovisionar la canalización y una identidad que refleje la cuenta de destino. AWS 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 AWS Proton por separado, solo una vez a nivel de AWS cuenta, y se usa para aprovisionar y administrar todos los canalizaciones. 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. Usa la acción de la UpdateAccountSettingsAPI.

    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

    Ejecuta 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, no se AWS Proton pueden 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 PR. La automatización puede leer esa marca y utilizarla para activar un comando de destrucción de Terraform.