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 - Recomendaciones de AWS

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

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

Resumen

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

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.

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

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, 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. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.

Arquitectura

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.

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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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).

  7. 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.

  8. 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.

  9. 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.

  10. 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.

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.

  2. 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.

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

  4. 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.

  5. 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 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)

Servicios de AWS

  • AWS CloudFormationle 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 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 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.

  • AWS CodePipeline 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) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.

  • Amazon Elastic Container Service (Amazon ECS) 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) te ayuda a crear y controlar claves criptográficas para proteger tus datos.

  • AWS Service Catalogle 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) 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

Repositorio de código

El código de este patrón está disponible en el repositorio dynamic_hotfix_codepipeline GitHub .

Prácticas recomendadas

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 y Prácticas recomendadas de seguridad en la documentación de IAM.

Epics

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

Para clonar el repositorio de muestras en un nuevo directorio de su ubicación de trabajo, ejecute el siguiente comando:

git clone git@github.com:aws-samples/dynamic_hotfix_codepipeline.git
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.

  • ApplicationName: esta variable se usa para nombrar los recursos creados para una aplicación, lo que facilita su seguimiento. Utilice el siguiente comando y sustituya Applicationname por el nombre real de la aplicación:

    export ApplicationName=<Applicationname>
  • BucketStartName: esta variable sirve para asignar un nombre a un bucket de Amazon S3. Los nombres de los buckets de S3 deben ser únicos a nivel mundial en todos Cuentas de AWS ellos. Utilice el siguiente comando y sustituya BucketName por un nombre único para su bucket de S3:

export BucketStartName=<BucketName>
  • Números de cuenta y regiones: estas variables almacenan Cuenta de AWS los números de los diferentes entornos y de la región de implementación. Utilice los siguientes comandos y sustituya los marcadores de posición (como prodaccountnumber yregion) por sus Cuenta de AWS números reales y los Región de AWS que esté utilizando.

    nota

    QAAccount es opcional. Si quiere usar QAAccount, configúrala con los parámetros de la pila principal de canalizaciones.

export ProdAccount=<prodaccountnumber> export StageAccount=<stage/preprodaccountnumber> export QAAccount=<qaccountnumber> export ToolsAccount=<toolsaccountnumber> export DepRegion=<region>
AWS DevOps
TareaDescripciónHabilidades 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).

#InToolsAccount aws cloudformation deploy \ --template-file pre-requisites/pre-reqs.yaml \ --stack-name prereqs \ --parameter-overrides BucketStartName=${BucketStartName} \ ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \ StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \ QAAccount=${QAAccount} \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}

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.

  1. Para empaquetar la CloudFormation plantilla en cada cuenta de carga de trabajo (fase, producción y control de calidad opcional), utilice los siguientes comandos. En el siguiente comando, sustituya S3bucketpackage por el nombre del bucket de Amazon S3 que desee usar en la compresión.

    #InStageAccount aws cloudformation package \ --template-file pre-requisites/infrastack.yaml \ --s3-bucket <S3bucketpackage> \ --s3-prefix infraStack \ --region ${DepRegion} \ --output-template-file pre-requisites/infrastructure_stage.template #InProdAccount aws cloudformation package \ --template-file pre-requisites/infrastack.yaml \ --s3-bucket <S3bucketpackage> \ --s3-prefix infraStack \ --region ${DepRegion} \ --output-template-file pre-requisites/infrastructure_prod.template
  2. Para implementar la CloudFormation plantilla en cada cuenta de carga de trabajo, utilice los siguientes comandos:

    #InStageAccount aws cloudformation deploy --stack-name inframainstack \ --parameter-overrides ApplicationName=${ApplicationName} ToolsAccount=${ToolsAccount} DepRegion=${DepRegion} \ --template-file pre-requisites/infrastructure_stage.template --region ${DepRegion} --capabilities CAPABILITY_NAMED_IAM #InProdAccount aws cloudformation deploy --stack-name inframainstack \ --parameter-overrides ApplicationName=${ApplicationName} ToolsAccount=${ToolsAccount} DepRegion=${DepRegion} \ --template-file pre-requisites/infrastructure_prod.template --region ${DepRegion} --capabilities CAPABILITY_NAMED_IAM
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).

#InToolsAccount aws cloudformation deploy \ --template-file pre-requisites/pre-reqs.yaml \ --stack-name prereqs \ --parameter-overrides BucketStartName=${BucketStartName} \ ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \ StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \ QAAccount=${QAAccount} PutPolicy=true \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}
AWS DevOps
TareaDescripciónHabilidades requeridas

Configure la cartera y los productos de Service Catalog.

Para configurar la cartera y los productos de Service Catalog, haga lo siguiente:

  1. Cargue las plantillas pipeline-main.yaml y pipeline-hotfix.yaml desde el repositorio del directorio a CodePipeline un bucket de Amazon S3 existente () en la región en la que desee implementar (Bucketname). DepRegion

    #InToolsAccount aws s3 cp ./codepipeline/pipeline-main.yaml s3://<Bucketname>/pipeline-main.yaml aws s3 cp ./codepipeline/pipeline-hotfix.yaml s3://<Bucketname>/pipeline-hotfix.yaml
  2. Configure la cartera y el producto de Service Catalog que administrarán la canalización de las ramas main y hotfix. Anote los detalles de la sección Outputs correspondiente a MainProductId y MainProductArtifactId de la siguiente pila. Tendrá que usar esa información en los pasos posteriores de la configuración de la canalización de la rama de main.

    #InToolsAccount aws cloudformation deploy \ --template-file pre-requisites/servicecatalogsetup.yaml \ --stack-name servicecatalogsetup \ --parameter-overrides TemplateBucket=<Bucketname> \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}
  3. Proporcione acceso a un rol de IAM que implementará los recursos de la cuenta de herramientas en la cartera de canalización principal de la cartera de Service Catalog. Utilice esta cartera para implementar la aplicación mediante la rama de main. Para más información sobre cómo proporcionar acceso, consulte la Concesión de acceso a los usuarios en la documentación de Service Catalog.

AWS DevOps

Configure as funciones de Lambda.

Esta solución utiliza las siguientes funciones de Lambda para administrar los flujos de trabajo de revisiones:

  • hotfix-lambda-function gestiona el aprovisionamiento de productos de Service Catalog cuando se crea una rama de hotfix.

  • hotfix-cleanup-lambda-function administra la finalización del producto cuando se elimina una rama de hotfix.

  • prcreation-lambda crea solicitudes de extracción desde la rama de hotfix a las ramas develop y main.

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:

  1. Para crear las funciones y los permisos de IAM para las funciones de Lambda, utilice el siguiente comando para implementar CloudFormation una pila:

    #InToolsAccount aws cloudformation deploy \ --template-file pre-requisites/lambdasetup.yaml \ --stack-name prsclambdasetup \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}
  2. Tras la implementación de la pila, conceda el acceso hotfix-lambda-execution-role a la cartera de canalizaciones de revisión de la cartera de Service Catalog mediante la Consola de administración de AWS. Este acceso permite a la función de Lambda iniciar o finalizar el producto de Service Catalog en las ramas de revisión.

AWS DevOps
TareaDescripciónHabilidades 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.

#InToolsAccount aws servicecatalog provision-product \ --product-id <MainProductId> \ --provisioning-artifact-id <MainProductArtifactId> \ --provisioned-product-name "${ApplicationName}-main-pipeline" \ --provisioning-parameters Key=CodeCommitRepoName,Value="${ApplicationName}-repository" Key=ECRRepository,Value="${ApplicationName}-app" \ --region=${DepRegion}
AWS DevOps

Implemente la aplicación mediante la rama de main.

  1. Para clonar el CodeCommit repositorio que se creó en los requisitos previos, utilice el git clone comando. Para obtener más información, consulte Conectarse al CodeCommit repositorio mediante la clonación del repositorio tal y como se describe en la CodeCommit documentación.

  2. Copie todos los archivos de la aplicación del directorio repotemplates disponible en el repositorio a su repositorio local clonado (${ApplicationName}-repository). Modifique los siguientes archivos para actualizar el ID ToolsAccount. En cada archivo, busque el parámetro RegistryAccountid y establezca su valor en su ID ToolsAccount. Confirma los cambios en el CodeCommit repositorio y envía los archivos a la rama main y a la develop rama.

  3. Para verificar el despliegue de la aplicación, supervise la CodePipeline ejecución mediante. Consola de administración de AWS Una vez completada la implementación, acceda a la aplicación mediante el FQDN del equilibrador de carga de aplicación en el entorno del escenario. Confirme que la aplicación funciona según lo previsto.

  4. Para aprobar el despliegue en producción, utilice la CodePipeline consola para localizar la canalización de la aplicación. Busque la etapa ApprovalToStart. Revise los cambios y, si son satisfactorios, apruebe manualmente la implementación en el paso de producción.

AWS DevOps
TareaDescripciónHabilidades 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:

  1. Cree una rama con un nombre que comience por la palabra clave hotfix. Por ejemplo, este patrón usa la hotfix-check1 rama del repositorio de CodeCommit aplicaciones (${ApplicationName}-repository). Para ver pasos más detallados, consulta Conectarse a un AWS CodeCommit repositorio y Comandos básicos de Git en la CodeCommit documentación.

  2. Compruebe que el producto Hotfix CICD Pipeline de Service Catalog se aprovisione correctamente de forma dinámica en la rama de hotfix-check1. El nombre del producto aprovisionado recibe el nombre de esta rama de hotfix y del nombre del CodeCommit repositorio de la aplicación.

  3. Realice algunos cambios menores en el archivo index.html y envíelos al CodeCommit repositorio.

  4. Compruebe que la CodePipeline ejecución se ha realizado correctamente en el entorno del escenario. Para implementarlo en el entorno de producción, proporcione la aprobación manual en CodePipeline.

  5. Compruebe que los cambios estén visibles en la página de inicio de la aplicación mediante el nombre de dominio (FQDN) del equilibrador de carga de aplicación. El FQDN está disponible en la sección Outputs de inframainstack-ALBStack-*.

AWS DevOps

Elimine la rama de hotfix-check1.

Para eliminar la rama de hotfix-check1 que creó anteriormente, haga lo siguiente:

  1. Elimine la hotfix-check1 rama que está en el repositorio de CodeCommit aplicaciones.

  2. Compruebe que el producto de Service Catalog que se aprovisionó para la rama de hotfix-check1 finalizó correctamente.

AWS DevOps
TareaDescripciónHabilidades requeridas

Limpie todos los recursos implementados.

Para limpiar los recursos que se implementaron anteriormente, haga lo siguiente:

  1. Para reducir verticalmente el servicio Amazon ECS a cero réplicas en las cuentas de carga de trabajo, utilice el siguiente comando:

    aws ecs update-service --cluster ${ApplicationName}-Cluster --service ${ApplicationName}-Service-stage --desired-count 0 --region ${DepRegion} aws ecs update-service --cluster ${ApplicationName}-Cluster --service ${ApplicationName}-Service-prod --desired-count 0 --region ${DepRegion}
  2. Finalice el producto de Service Catalog que se aprovisionó para la rama de main.

  3. Limpie los objetos creados en los buckets de Amazon S3 de la cuenta de herramientas. Elimine todas las imágenes de Docker en Amazon ECR antes de eliminar el propio registro.

  4. Elimine los roles de IAM en la sección de acceso concedido de las carteras de Service Catalog antes de eliminar la cartera de Service Catalog.

  5. Elimine las CloudFormation pilas desplegadas en la cuenta de herramientas y en las cuentas de carga de trabajo.

##In Tools Account## aws cloudformation delete-stack --stack-name servicecatalogsetup --region ${DepRegion} aws cloudformation delete-stack --stack-name prlambdasetup --region ${DepRegion} aws cloudformation delete-stack --stack-name prereqs --region ${DepRegion}
##In Workload Accounts## aws cloudformation delete-stack --stack-name inframainstack --region ${DepRegion}

Para más información, consulte Eliminación de productos aprovisionados en la documentación de Service Catalog.

AWS DevOps

Resolución de problemas

ProblemaSolució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 .

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 .

Recursos relacionados

Información adicional

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 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.