

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.

# Automatice la gestión dinámica de canalizaciones para implementar soluciones de hotfix en entornos de Gitflow mediante el uso y AWS Service Catalog AWS CodePipeline
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions"></a>

*Balaji Vedagiri, Faisal Shahdad, Shanmugam Shanker y Vivek Thangamuthu, Amazon Web Services*

## Resumen
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-summary"></a>

**nota**  
AWS CodeCommit ya no está disponible para nuevos clientes. Los clientes actuales de AWS CodeCommit pueden seguir utilizando el servicio con normalidad. [Más información](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider)

Este patrón aborda un escenario en el que se administra una canalización de revisiones dinámica que se dedica exclusivamente a implementar de forma segura soluciones de revisión en un entorno de producción. La solución se implementa y administra mediante una AWS Service Catalog cartera y un producto. Se utiliza una EventBridge regla de Amazon para la automatización de eventos. Las restricciones se imponen mediante el uso de las restricciones de la cartera de Service Catalog y los roles de AWS Identity and Access Management (IAM) para los desarrolladores. Solo una AWS Lambda función puede lanzar el producto Service Catalog, activada por la EventBridge regla. Este patrón está diseñado para entornos con una configuración específica de Gitflow, que se describe en [Información adicional](#automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional).

Por lo general, se implementa una revisión para abordar problemas críticos o de seguridad notificados en un entorno activo, como el de producción. Las revisiones se deben implementar directa y únicamente en los entornos de prueba y producción. Las canalizaciones de prueba y producción se utilizan ampliamente en las solicitudes de desarrollo habituales. Estas canalizaciones no se pueden usar para implementar revisiones, porque ya hay características de control de calidad activas que no se pueden pasar a la fase de producción. Para publicar revisiones, este patrón describe un proceso dinámico y de corta duración con las siguientes características de seguridad:
+ **Creación automática**: cada vez que se crea una rama de revisiones en un repositorio, se crea automáticamente una AWS CodeCommit canalización de revisiones. 
+ **Restricciones de acceso**: los desarrolladores no tienen acceso para crear esta canalización fuera del proceso de revisión. 
+ **Etapa controlada**: la canalización tiene una etapa controlada con un token de acceso especial, lo que garantiza que una solicitud de extracción (PR) solo se pueda crear una vez. 
+ **Etapas de aprobación**: las etapas de aprobación se incluyen en la canalización para obtener las aprobaciones necesarias de las partes interesadas pertinentes. 
+ **Eliminación automática**: la canalización de revisiones se elimina automáticamente cada vez que se elimina una `hotfix` rama del CodeCommit repositorio después de fusionarla con un PR. 

## Requisitos previos y limitaciones
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-prereqs"></a>

**Requisitos previos **
+ Se Cuentas de AWS requieren tres activos, de la siguiente manera:
  + Cuenta de herramientas: para la configuración de integración y entrega continuas (CI/CD).
  + Cuenta de etapa: para realizar pruebas de aceptación por parte de los usuarios.
  + Cuenta de producción: para un usuario final de empresa.
  + (Opcional) Agregue una Cuenta de AWS para que actúe como una cuenta de control de calidad. Esta cuenta es necesaria si desea disponer tanto de una configuración de canalización principal, incluido el control de calidad, como de una solución de canalización con revisiones para realizar pruebas.
+ Una AWS CloudFormation pila con la condición opcional de implementarla en la cuenta de control de calidad mediante la canalización principal, si es necesario. El patrón aún se puede probar sin la configuración de la canalización principal; para ello, solo debe crear y eliminar una rama de `hotfix`.
+ Un depósito de Amazon Simple Storage Service (Amazon S3) para almacenar CloudFormation las plantillas que se utilizan para crear los productos del Service Catalog.
+ Cree reglas de aprobación de relaciones públicas para el CodeCommit repositorio de acuerdo con los requisitos de conformidad (después de crear el repositorio).
+ Restrinja los permisos de IAM de los desarrolladores y líderes de equipo para denegar la ejecución de la función de Lambda [prcreation-lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55), ya que solo debe invocarse desde la canalización.

**Limitaciones**
+ El CloudFormation proveedor se utiliza en la fase de despliegue y la aplicación se despliega mediante un conjunto de CloudFormation cambios. Si desea utilizar una opción de implementación diferente, modifique la CodePipeline pila según sea necesario.
+ Este patrón utiliza AWS CodeBuild y otros archivos de configuración para implementar un microservicio de muestra. Si tiene un tipo de carga de trabajo diferente (por ejemplo, cargas de trabajo sin servidor), debe actualizar todas las configuraciones pertinentes.
+ Este patrón despliega la aplicación en un solo extremo Región de AWS (por ejemplo, US-east-1 de EE. UU. Este (Virginia del Norte)). Cuentas de AWS Para realizar la implementación en varias regiones, cambie la referencia a la región en los comandos y las pilas.
+ Algunas Servicios de AWS no están disponibles en todos. Regiones de AWS Para obtener información sobre la disponibilidad en regiones, consulte [AWS services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-architecture"></a>

Los diagramas de esta sección proporcionan los flujos de trabajo para los eventos de creación y eliminación del ciclo de vida.

![Flujo de trabajo para crear un evento de ciclo de vida.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/3939f77c-4221-4c23-a3a1-3e8a294b2b32.png)


El diagrama anterior para crear un evento de ciclo de vida muestra lo siguiente:

1. El desarrollador crea una `hotfix-*` rama en el CodeCommit repositorio para desarrollar una solución relacionada con las revisiones.

1. El evento `hotfix-*` de creación de sucursales se captura mediante la EventBridge regla. Los detalles del evento incluyen los nombres del repositorio y de la sucursal.

1. La EventBridge regla invoca la AWS Lambda función. `hotfix-lambda-function` La EventBridge regla pasa la información del evento a la función Lambda como entrada.

1. La función de Lambda procesa la entrada para recuperar los nombres del repositorio y de la rama. Activa el producto de Service Catalog con los valores recuperados de la entrada procesada.

1. El producto de Service Catalog incluye una configuración de canalización que implementará la solución en los entornos de etapa y producción. El bloque de canalización incluye las etapas de origen, compilación e implementación. Además, hay una etapa de aprobación manual para favorecer la implementación en el entorno de producción.

1. La etapa de origen recupera el código del repositorio y la rama de `hotfix-*` que se crearon en el primer paso. El código se pasa a la fase de compilación a través de un bucket de Amazon S3 para artefactos. En la etapa de compilación, se crea una imagen de contenedor que incluye la revisión que se ha desarrollado en la rama de `hotfix-*` y se ha agregado a Amazon Elastic Container Registry (Amazon ECR).

1. La etapa de implementación en el entorno de la etapa actualiza Amazon Elastic Container Service (Amazon ECS) con la imagen del contenedor más reciente que incluye la revisión. El hotfix se implementa mediante la creación y ejecución de un conjunto de CloudFormation cambios.

1. La función de Lambda `prcreation-lambda` se invoca después de una implementación correcta en el entorno de etapa. Esta función de Lambda crea una PR desde la rama de `hotfix-*` hacia las ramas `develop` y `main` del repositorio. La función de Lambda garantiza que la solución desarrollada en la rama de `hotfix-*` se fusione e incluya en las implementaciones posteriores.

1. Una etapa de aprobación manual ayuda a garantizar que las partes interesadas necesarias revisen la solución y aprueben su implementación en la fase de producción.

1. La etapa de implementación en el entorno de producción actualiza Amazon ECS con la imagen del contenedor más reciente que incluye la revisión. El hotfix se implementa mediante la creación y ejecución de un conjunto de CloudFormation cambios.

![Flujo de trabajo para eliminar un evento de ciclo de vida.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/192aa897-bd9b-4a9f-804e-340371612b3b.png)


El diagrama anterior para eliminar un evento de ciclo de vida muestra lo siguiente:

1. El desarrollador elimina la rama de `hotfix-*` después de implementar correctamente la revisión en el entorno de producción.

1. El evento de eliminación de una `hotfix-*` rama se captura mediante una EventBridge regla. Los detalles del evento incluyen los nombres del repositorio y de la sucursal.

1. La EventBridge regla invoca la función Lambda. La EventBridge regla pasa la información del evento a la función Lambda como entrada.

1. La función de Lambda procesa la entrada para recuperar los nombres del repositorio y de la rama. La función de Lambda determina el producto de Service Catalog correspondiente a partir de la entrada pasada y, a continuación, finaliza el producto.

1. La finalización del producto aprovisionado de Service Catalog elimina la canalización y los recursos relevantes que se crearon anteriormente en ese producto.

**Automatización y escala**
+ El patrón incluye una EventBridge regla y una función Lambda, que puede gestionar varias solicitudes de creación de sucursales de hotfix en paralelo. La función de Lambda aprovisiona el producto de Service Catalog para la regla de eventos coincidentes.
+ La configuración de la canalización se gestiona mediante el producto de Service Catalog, que proporciona funciones de control de versiones. La solución también se escala automáticamente para gestionar en paralelo múltiples desarrollos de revisiones de la misma aplicación.
+ La función [prcreation-lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55) garantiza que estos cambios de revisión también se vuelvan a combinar en `main` y las ramas de `develop` mediante la creación automática de solicitudes de extracción. Este enfoque es esencial para mantener `main` y las ramas de `develop` actualizadas con todas las correcciones y evitar posibles regresiones de código. Este proceso permite mantener la coherencia entre las ramas y evita las regresiones de código, ya que garantiza que las ramas más antiguas tengan las correcciones más recientes.

## Tools (Herramientas)
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-tools"></a>

**Servicios de AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en todo el territorio y. Cuentas de AWS Regiones de AWS
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) es un servicio de compilación completamente administrado que le permite compilar código fuente, poner en marcha pruebas unitarias y producir artefactos listos para implementar.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) es un servicio de control de versiones que permite almacenar y administrar repositorios de Git de forma privada, sin necesidad de administrar su propio sistema de control de origen. AWS CodeCommit ya no está disponible para clientes nuevos. Los clientes actuales de AWS CodeCommit pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulta [Cómo migrar tu AWS CodeCommit repositorio a otro proveedor de Git](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/).
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) permite diseñar y configurar rápidamente las diferentes etapas de un proceso de lanzamiento de software y automatizar los pasos necesarios para lanzar los cambios en el software de manera continua.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) es un servicio de administración de contenedores escalable y rápido que ayuda a ejecutar, detener y administrar contenedores en un clúster.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) te ayuda a crear y controlar claves criptográficas para proteger tus datos.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)le ayuda a gestionar de forma centralizada los catálogos de servicios de TI aprobados. AWS Los usuarios finales pueden implementar rápidamente solo los servicios de TI aprobados que necesitan, de acuerdo con las limitaciones establecidas por su organización.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Otras herramientas**
+ [CloudFormation Linter (cfn-lint) es un linter](https://github.com/aws-cloudformation/cfn-lint) [que compara las plantillas CloudFormation YAML o JSON con la especificación del recurso. CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) También realiza otras comprobaciones, como verificar los valores válidos de las propiedades de los recursos y el cumplimiento de las prácticas recomendadas.
+ [cfn-nag](https://github.com/stelligent/cfn_nag) es una herramienta de código abierto que identifica posibles problemas de seguridad en las plantillas mediante la búsqueda de patrones. CloudFormation 
+ [Docker](https://www.docker.com/) es un conjunto de productos de plataforma como servicio (PaaS) que utiliza la virtualización del sistema operativo para entregar software en contenedores. Este patrón utiliza Docker para crear y probar imágenes de contenedores de forma local.
+ [Git](https://git-scm.com/docs) es un sistema de control de versiones distribuido y de código abierto.

**Repositorio de código**

[El código de este patrón está disponible en el repositorio dynamic\_hotfix\_codepipeline GitHub .](https://github.com/aws-samples/dynamic_hotfix_codepipeline)

## Prácticas recomendadas
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-best-practices"></a>

Revise y ajuste los roles de IAM y las políticas de control de servicios (SCP) de su entorno para asegurarse de que restringen el acceso de forma adecuada. Esto es crucial para evitar cualquier acción que pueda anular las medidas de seguridad incluidas en este patrón. Siga el principio de privilegio mínimo y conceda los permisos mínimos necesarios para llevar a cabo una tarea. Para obtener más información, consulte [Otorgar privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) y [Prácticas recomendadas de seguridad](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la documentación de IAM.

## Epics
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-epics"></a>

### Configuración del entorno de trabajo
<a name="set-up-the-work-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clonar el repositorio. | Para clonar el [repositorio](https://github.com/aws-samples/dynamic_hotfix_codepipeline) de muestras en un nuevo directorio de su ubicación de trabajo, ejecute el siguiente comando:<pre>git clone git@github.com:aws-samples/dynamic_hotfix_codepipeline.git</pre> | AWS DevOps | 
| Exporte variables de entorno para el despliegue de CloudFormation pilas. | Defina las siguientes variables de entorno que se utilizarán como entrada en las CloudFormation pilas más adelante en este patrón.[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export BucketStartName=<BucketName></pre>[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export ProdAccount=<prodaccountnumber><br />export StageAccount=<stage/preprodaccountnumber><br />export QAAccount=<qaccountnumber><br />export ToolsAccount=<toolsaccountnumber><br />export DepRegion=<region></pre> | AWS DevOps | 

### Configure los requisitos previos necesarios en Cuentas de AWS
<a name="set-up-prerequisites-required-in-aws-accounts"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree los recursos necesarios para CI/CD la cuenta de herramientas. | Para implementar la CloudFormation pila en la cuenta de herramientas, usa los siguientes comandos. (Elimine el parámetro `QAAccount` si no utiliza la cuenta de control de calidad en la configuración).<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre><br />Anote los recursos que el CodeCommit repositorio y Amazon ECR crearon a partir de la pila anterior. Estos parámetros son necesarios para configurar la rama de `main` de la canalización en los próximos pasos. | AWS DevOps | 
| Cree los recursos necesarios para CI/CD las cuentas de carga de trabajo. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Actualice la política de bucket de artefactos de S3 para permitir el acceso a las cuentas de carga de trabajo. | Para actualizar los requisitos previos de la CloudFormation pila en la cuenta de herramientas, utilice los siguientes comandos para añadir todos los permisos necesarios para las cuentas de carga de trabajo de Stage y Production. (Elimine el parámetro `QAAccount` si no lo utiliza en la configuración).<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} PutPolicy=true \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre> | AWS DevOps | 

### Configuración de la función de Lambda y los recursos de Service Catalog en la cuenta de herramientas
<a name="set-up-lam-function-and-sc-resources-in-tools-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la cartera y los productos de Service Catalog. | Para configurar la cartera y los productos de Service Catalog, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Configure as funciones de Lambda. | Esta solución utiliza las siguientes funciones de Lambda para administrar los flujos de trabajo de revisiones:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<br />Para permitir que las funciones de Lambda aprovisionen y cancelen los productos de Service Catalog cuando se creen o eliminen `hotfix ` sucursales mediante la EventBridge regla asociada, siga estos pasos:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Creación de una canalización para la rama principal e implementación de la aplicación en las cuentas de carga de trabajo
<a name="create-pipeline-for-main-branch-and-deploy-application-in-workload-accounts"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la canalización para la rama de `main`. | Para configurar la canalización de la rama principal, ejecute el siguiente comando en la cuenta de herramientas. Sustituya los parámetros de `MainProductId` y `MainProductArtifactId` con los valores de los resultados de pila `servicecatalogsetup`.<pre>#InToolsAccount<br />aws servicecatalog provision-product \<br />    --product-id <MainProductId> \<br />    --provisioning-artifact-id <MainProductArtifactId> \<br />    --provisioned-product-name "${ApplicationName}-main-pipeline" \<br />    --provisioning-parameters Key=CodeCommitRepoName,Value="${ApplicationName}-repository" Key=ECRRepository,Value="${ApplicationName}-app" \<br />    --region=${DepRegion}</pre> | AWS DevOps | 
| Implemente la aplicación mediante la rama de `main`. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Creación de la canalización para una rama de hotfix-\* e implementación de la revisión
<a name="create-the-pipeline-for-a-hotfix--branch-and-deploy-the-hotfix"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una rama de `hotfix-*` y confirme los cambios. | Para crear una canalización para la rama de `hotfix-*` e implementar la revisión en las cuentas de carga de trabajo, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Elimine la rama de `hotfix-check1`. | Para eliminar la rama de `hotfix-check1` que creó anteriormente, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Eliminar recursos
<a name="clean-up-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Limpie todos los recursos implementados. | Para limpiar los recursos que se implementaron anteriormente, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>##In Tools Account##<br />aws cloudformation delete-stack --stack-name servicecatalogsetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prlambdasetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prereqs --region ${DepRegion}</pre><pre>##In Workload Accounts##<br />aws cloudformation delete-stack --stack-name inframainstack --region ${DepRegion}</pre><br />Para más información, consulte [Eliminación de productos aprovisionados](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) en la documentación de Service Catalog. | AWS DevOps | 

## Resolución de problemas
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Los cambios que ha realizado en el CodeCommit repositorio no se están implementando. | Comprueba los CodeBuild registros para ver si hay errores en la acción de compilación de Docker. Para obtener más información, consulte la [Documentación de CodeBuild ](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html). | 
| El producto de Service Catalog no se está aprovisionando. | Revisa las CloudFormation pilas relacionadas para ver si hay eventos fallidos. Para obtener más información, consulte la [Documentación de CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html). | 

## Recursos relacionados
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-resources"></a>
+ [Comandos básicos de Git](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-basic-git.html)
+ [Configure una política de IAM para limitar las transferencias y fusiones a una sucursal](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-conditional-branch.html#how-to-conditional-branch-create-policy)
+ [Conectarse a un AWS CodeCommit repositorio](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Concesión de acceso a los usuarios](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_users.html)
+ [Enviar una imagen de Docker a un repositorio privado de Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)
+ [Solución de problemas AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html)
+ [¿Qué es? AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)

## Información adicional
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional"></a>

Este patrón está diseñado para entornos con una configuración de Gitflow que se adopta en el CI/CD proceso para el flujo de trabajo de desarrollo. Las canalizaciones siguen el ciclo de implementación, que comienza con el desarrollo y pasa por los entornos de control de calidad (QA), etapas y producción. La CI/CD configuración incluye dos ramas de git con despliegues promocionales en los siguientes entornos:
+ La rama de `develop` se implementa en el entorno de desarrollo.
+ La rama de `main` realiza implementaciones en los entornos de control de calidad, de etapas y de producción.

En esta configuración, es todo un desafío aplicar una revisión o un parche de seguridad más rápido que el ciclo de implementación habitual mientras se continúa con el desarrollo activo de nuevas características. Es necesario establecer un proceso dedicado para abordar las solicitudes de revisión o seguridad, a fin de garantizar que los entornos activos sigan funcionando correctamente y sean seguros.

Sin embargo, puede utilizar otras opciones disponibles sin necesidad de un usar proceso de implementación específico si:
+ El CI/CD proceso está bien equipado con pruebas automatizadas, como las funcionales y end-to-end las pruebas, que eliminan la necesidad de realizar pruebas manuales y evitan demoras en las implementaciones en la producción. Sin embargo, si las pruebas automatizadas no están bien integradas en el CI/CD proceso, introducir una pequeña modificación en el entorno de producción puede resultar complejo y engorroso para los desarrolladores. Esto se debe a que es posible que haya nuevas características pendientes de aprobación y cierre en el entorno de control de calidad. No se puede poner en fase de producción una revisión o una corrección de seguridad de forma sencilla y simultánea.
+ Los equipos de desarrollo implementan continuamente nuevas características en el entorno de producción e integran revisiones o parches de seguridad en la implementación programada de cada nueva característica. En otras palabras, la próxima actualización de características del entorno de producción consta de dos componentes: la incorporación de una nueva característica y la inclusión de la revisión o el parche de seguridad. Sin embargo, si el ciclo de implementación no es continuo, es posible que ya haya varias características nuevas pendientes de aprobación en el entorno de control de calidad. Administrar diferentes versiones y garantizar que se vuelvan a aplicar los cambios correctos puede convertirse en algo complejo y propenso a errores.

**nota**  
Si utilizas la [versión 2](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types.html#:~:text=V2%20type%20pipelines%20have%20the%20same%20structure) de AWS CodePipeline con los activadores adecuados configurados en la `hotfix` sucursal, necesitarás un proceso específico para atender las solicitudes no programadas. En la versión 2, puede configurar desencadenadores para las solicitudes entrada o salida. La ejecución se pondrá en cola o se ejecutará inmediatamente, en función del estado anterior de la canalización. Sin embargo, con una canalización específica, las correcciones se aplican inmediatamente al entorno de producción, lo que garantiza que los problemas urgentes se resuelvan sin demora.