Crear e implementar de forma automática una aplicación Java en Amazon EKS mediante una canalización de CI/CD - 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.

Crear e implementar de forma automática una aplicación Java en Amazon EKS mediante una canalización de CI/CD

Creado por MAHESH RAGHUNANDANAN (AWS), James Radtke (AWS) y Jomcy Pappachen (AWS)

Repositorio de código: aws-cicd-java-eks

Entorno: producción

Tecnologías: contenedores y microservicios; CloudNative DevOps; Modernización

Carga de trabajo: todas las demás cargas de trabajo

Servicios de AWS: AWS CloudFormation; AWS CodeCommit CodePipeline; Amazon EC2 Container Registry; Amazon EKS

Resumen

Este patrón describe cómo crear una canalización de integración y entrega continuas (CI/CD) que cree e implemente automáticamente una aplicación Java con DevSecOps las prácticas recomendadas en un clúster de Amazon Elastic Kubernetes Service (Amazon EKS) en la nube de Amazon Web Services (AWS). Este patrón utiliza una aplicación de saludo desarrollada con un marco Java Spring Boot y que utiliza Apache Maven.

Puede utilizar el enfoque de este patrón para crear el código de una aplicación Java, empaquetar los artefactos de la aplicación como una imagen de Docker, escanear la imagen por motivos de seguridad y cargarla como un contenedor de carga de trabajo en Amazon EKS. El enfoque de este patrón es útil si desea migrar de una arquitectura monolítica estrechamente acoplada a una arquitectura de microservicios. Este enfoque también le ayuda a supervisar y gestionar todo el ciclo de vida de una aplicación Java, lo que garantiza un mayor nivel de automatización y ayuda a evitar errores o fallos.

Requisitos previos y limitaciones

Requisitos previos

  • Una cuenta de AWS activa.

  • Interfaz de la línea de comandos de AWS (AWS CLI) versión 2 instalada y configurada. Para obtener más información, consulte Instalación, actualización y desinstalación de la versión 2 de la CLI de AWS en la documentación de la CLI de AWS.

  • La versión 2 de la CLI de AWS debe configurarse con el mismo rol de IAM que crea el clúster de Amazon EKS, ya que solo esa función está autorizada a añadir otras funciones de IAM al aws-auth ConfigMap. Para obtener información y los pasos para configurar la CLI de AWS, consulte Conceptos básicos de configuración en la documentación de la CLI de AWS.

  • Funciones y permisos de AWS Identity and Access Management (IAM) con acceso total a AWS CloudFormation. Para obtener más información al respecto, consulte Controlar el acceso con IAM en la CloudFormation documentación de AWS.

  • Un clúster de Amazon EKS existente, con detalles del nombre del rol de IAM y el nombre de recurso de Amazon (ARN) del rol de IAM de los nodos de trabajo del clúster de EKS.

  • Escalador automático de clústeres de Kubernetes instalado y configurado en su clúster de Amazon EKS. Para obtener más información, consulte Escalado automático de clústeres en la documentación de Amazon EKS. 

  • Acceso al código del GitHub repositorio.

Notas importantes

AWS Security Hub se habilita como parte de las CloudFormation plantillas de AWS que se incluyen en el código. De forma predeterminada, una vez activado Security Hub, se ofrece una prueba gratuita de 30 días, tras la cual hay un costo asociado a este servicio de AWS. Para obtener más información, consulte Precios de AWS Security Hub.

Versiones de producto

  • Helm versión 3.4.2 o posterior

  • Apache Maven versión 3.6.3 o posterior

  • BridgeCrew Compruebe la versión 2.2 o posterior

  • Aqua Security Trivy versión 0.37 o posterior

Arquitectura

Pila de tecnología

  • AWS CodeBuild

  • AWS CodeCommit

  • Amazon CodeGuru

  • AWS CodePipeline

  • Amazon Elastic Container Registry

  • Amazon Elastic Kubernetes Service

  • Amazon EventBridge

  • AWS Security Hub

  • Amazon Simple Notification Service (Amazon SNS)

Arquitectura de destino

""

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. El desarrollador actualiza el código de la aplicación Java en la rama base del CodeCommit repositorio, lo que crea una solicitud de extracción (PR).

  2. En cuanto se envía el PR, Amazon CodeGuru Reviewer revisa automáticamente el código, lo analiza en función de las prácticas recomendadas para Java y ofrece recomendaciones al desarrollador.

  3. Una vez que el PR se fusiona con la rama base, se crea un EventBridge evento de Amazon.

  4. El EventBridge evento inicia la CodePipeline canalización, que comienza.

  5. CodePipeline ejecuta la etapa de CodeSecurity escaneo (seguridad continua).

  6. CodeBuild inicia el proceso de análisis de seguridad, en el que los archivos Helm de implementación de Dockerfile y Kubernetes se escanean con Checkov, y el código fuente de la aplicación se escanea en función de los cambios incrementales en el código. El escaneo del código fuente de la aplicación lo realiza el contenedor de interfaz de línea de comandos (CLI) de CodeGuru Reviewer.

  7. Si la etapa de escaneo de seguridad es exitosa, se inicia la etapa de compilación (integración continua).

  8. En la etapa de compilación, CodeBuild crea el artefacto, empaqueta el artefacto en una imagen de Docker, escanea la imagen en busca de vulnerabilidades de seguridad mediante Aqua Security Trivy y almacena la imagen en Amazon ECR.

  9. Las vulnerabilidades detectadas en el paso 8 se cargan en Security Hub para que los desarrolladores o ingenieros las analicen más a fondo. Security Hub proporciona una descripción general y recomendaciones para corregir las vulnerabilidades.

  10. Las notificaciones por correo electrónico de las distintas fases de la CodePipeline canalización se envían a través de Amazon SNS.

  11. Una vez completadas las fases de integración continua, CodePipeline pasa a la etapa de implementación (entrega continua).

  12. La imagen de Docker se implementa en Amazon EKS como una carga de trabajo de contenedor (pod) mediante gráficos de Helm.

  13. El pod de la aplicación está configurado con Amazon CodeGuru Profiler Agent, que enviará los datos de creación de perfiles de la aplicación (CPU, uso del montón y latencia) a Amazon CodeGuru Profiler, lo que ayuda a los desarrolladores a comprender el comportamiento de la aplicación.

Herramientas

Servicios de AWS

  • AWS le CloudFormation ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y gestionarlos durante todo su ciclo de vida en todas las cuentas y regiones de AWS.

  • AWS CodeBuild es un servicio de compilación totalmente gestionado que le ayuda a compilar código fuente, ejecutar pruebas unitarias y producir artefactos listos para su implementación.

  • AWS CodeCommit es un servicio de control de versiones que le ayuda a almacenar y gestionar repositorios de Git de forma privada, sin necesidad de gestionar su propio sistema de control de código fuente.

  • Amazon CodeGuru Profiler recopila datos de rendimiento en tiempo de ejecución de sus aplicaciones activas y proporciona recomendaciones que pueden ayudarle a ajustar el rendimiento de las aplicaciones.

  • Amazon CodeGuru Reviewer utiliza el análisis de programas y el aprendizaje automático para detectar posibles defectos que son difíciles de encontrar para los desarrolladores y ofrece sugerencias para mejorar el código de Java y Python.

  • AWS le CodePipeline ayuda a modelar y configurar rápidamente las diferentes etapas de una versión de software y a automatizar los pasos necesarios para publicar cambios de software de forma 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 Kubernetes Service (Amazon EKS) le ayuda a ejecutar Kubernetes en AWS sin necesidad de instalar ni mantener su propio plano de control o nodos de Kubernetes.

  • Amazon EventBridge es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, las funciones de Lambda de AWS, los puntos de conexión de invocación HTTP que utilizan destinos de API o los buses de eventos de otras cuentas de AWS.

  • AWS Identity and Access Management (IAM) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.

  • AWS Security Hub proporciona una visión completa de su estado de seguridad en AWS. También le permite comprobar si su entorno de AWS cumple con los estándares y las prácticas recomendadas del sector de seguridad.

  • Amazon Simple Notification Service (Amazon SNS) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico.

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

Otros servicios

  • Helm es un administrador de paquetes de código abierto para Kubernetes.

  • Apache Maven es una herramienta de software para la comprensión y administración de proyectos.

  • BridgeCrew Checkov es una herramienta de análisis de código estático para escanear la infraestructura como archivos de código (IaC) en busca de errores de configuración que puedan provocar problemas de seguridad o de conformidad.

  • Aqua Security Trivy es un escáner completo para detectar vulnerabilidades en imágenes de contenedores, sistemas de archivos y repositorios de Git, además de problemas de configuración.

Código

El código de este patrón está disponible en el repositorio. GitHub aws-codepipeline-devsecops-amazoneks

Prácticas recomendadas

  • Se ha seguido el principio del privilegio mínimo para las entidades de IAM en todas las fases de esta solución. Si desea ampliar la solución con servicios de AWS adicionales o herramientas de terceros, le recomendamos que siga el principio de privilegios mínimos.

  • Si tiene varias aplicaciones Java, le recomendamos que cree canalizaciones de CI/CD independientes para cada aplicación.

  • Si tiene una aplicación monolítica, le recomendamos dividirla en microservicios en la medida de lo posible. Los microservicios son más flexibles, facilitan la implementación de aplicaciones como contenedores y proporcionan una mejor visibilidad de la creación y la implementación generales de la aplicación.

Epics

TareaDescripciónHabilidades requeridas

Clona el GitHub repositorio.

Para clonar el repositorio, ejecute el siguiente comando.

git clone https://github.com/aws-samples/aws-codepipeline-devsecops-amazoneks
Desarrollador de aplicaciones, DevOps ingeniero

Cree un bucket de S3 y suba el código.

  1. Inicie sesión en la consola de administración de AWS, abra la consola de Amazon S3 y, a continuación, cree un bucket de S3 en la región de AWS en la que planea implementar esta solución. Para obtener más información, consulte Creación de un bucket en la documentación de Amazon S3.

  2. En el bucket de S3, cree una carpeta llamada code.

  3. Navegue hasta el lugar donde clonó el repositorio. Para crear una versión comprimida de todo el código con la extensión .zip (cicdstack.zip) y validar el archivo .zip, ejecute los siguientes comandos en orden.

    Nota: Si el comando python falla e indica que no se encontró Python, utilice python3 en su lugar.

    cd aws-codepipeline-devsecops-amazoneks python -m zipfile -c cicdstack.zip * python -m zipfile -t cicdstack.zip
  4. Cargue el archivo cicdstack.zip a la carpeta de código que creó previamente en el bucket de S3.

AWS DevOps, DevOps ingeniero, administrador de la nube, DevOps

Cree una CloudFormation pila de AWS.

  1. Abre la CloudFormation consola de AWS y selecciona Create stack.

  2. En el panel Specify Template (Especificar plantilla), elija Upload a template file (Cargar un archivo de plantilla), elija el archivo cf_templates/codecommit_ecr.yaml y, a continuación, elija Next (Siguiente).

  3. En Especificar los detalles de la pila, introduzca el nombre de la pila y, a continuación, aporte los siguientes valores de los parámetros de entrada:

    • CodeCommitRepositoryBranchName: el nombre de la sucursal en la que residirá su código (el predeterminado es main)

    • CodeCommitRepositoryName: el nombre del CodeCommit repositorio que se va a crear.

    • CodeCommitRepositoryS3Bucket: el nombre del bucket de S3 en el que creaste la carpeta de códigos

    • CodeCommitRepositoryS3: BucketObjKey code/cicdstack.zip

    • ECR RepositoryName: el nombre del repositorio de Amazon ECR que se va a crear

  4. Elija Siguiente, utilice la configuración predeterminada para las Opciones de configuración de pila y, a continuación, elija Siguiente.

  5. En la sección Review (Revisar), verifique los detalles de la plantilla y la pila y, a continuación, seleccione Create stack (Crear pila). A continuación, se crea la pila, que incluye los repositorios CodeCommit y Amazon ECR.

  6. Anote los nombres de los repositorios CodeCommit y de Amazon ECR, que serán necesarios para la configuración de la canalización de CI/CD de Java.

AWS DevOps, DevOps

Valide la implementación de la CloudFormation pila.

  1. En Stacks en la CloudFormation consola, verifica el estado de la CloudFormation pila que has implementado. El estado de la pila debe ser CREATE COMPLETE.

  2. Además, desde la consola, compruebe que Amazon ECR CodeCommit y Amazon ECR se hayan aprovisionado y estén listos.

DevOps ingeniero

Elimine el bucket de S3.

Vacíe y borre el bucket de S3 que creó con anterioridad. Para obtener más información, consulte Eliminación de un bucket en la documentación de Amazon S3.

AWS DevOps, DevOps
TareaDescripciónHabilidades requeridas

Configure los gráficos de Helm de su aplicación Java.

  1. En la ubicación en la que clonó el GitHub repositorio, vaya a la carpetahelm_charts/aws-proserve-java-greeting. En esta carpeta, el archivo values.dev.yaml contiene información sobre la configuración de los recursos de Kubernetes que puede modificar para las implementaciones de contenedores en Amazon EKS. Actualice el parámetro del repositorio de Docker proporcionando el ID de su cuenta de AWS, la región de AWS y el nombre del repositorio de Amazon ECR.

    image: repository: <account-id>.dkr.ecr.<region>.amazonaws.com/<app-ecr-repo-name>
  2. El tipo de servicio del pod de Java está establecido en LoadBalancer.

    service: type: LoadBalancer port: 80 targetPort: 8080 path: /hello initialDelaySeconds: 60 periodSeconds: 30

    Para usar un servicio diferente (por ejemplo, NodePort), puede cambiar los parámetros. Para obtener más información, consulte Documentación Kubernetes en la documentación de Kubernetes.

  3. Puede activar el Escalador automático de Kubernetes Horizontal Pod cambiando el parámetro autoscaling a enabled: true.

    autoscaling: enabled: true minReplicas: 1 maxReplicas: 100 targetCPUUtilizationPercentage: 80 # targetMemoryUtilizationPercentage: 80

Puede habilitar diferentes funciones para las cargas de trabajo de Kubernetes cambiando los valores del values.<ENV>.yaml archivo, donde <ENV> se encuentra su entorno de desarrollo, producción, UAT o control de calidad.

DevOps

Valide los gráficos de Helm para detectar errores de sintaxis.

  1. Desde la terminal, compruebe que Helm v3 esté instalado en su estación de trabajo local ejecutando el siguiente comando.

    helm --version

    Si Helm v3 no está instalado, instálelo.

  2. En la terminal, navegue hasta el directorio de gráficos de Helm (helm_charts/aws-proserve-java-greeting) y ejecute el siguiente comando.

    helm lint . -f values.dev.yaml

    Esto comprobará si hay errores de sintaxis en los gráficos de Helm.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Crear la canalización de CI/CD.

  1. Abra la CloudFormation consola de AWS y elija Create stack.

  2. En el panel Specify Template (Especificar plantilla), elija Upload a template file (Cargar un archivo de plantilla), elija el archivo cf_templates/build_deployment.yaml y, a continuación, elija Next (Siguiente).

  3. En Specify stack details (Especificar los detalles de la pila), introduzca el Stack name (Nombre de la pila) y, a continuación, aporte los siguientes valores de los parámetros de entrada:

    • CodeBranchName: Nombre de la rama del CodeCommit repositorio, donde reside su código

    • EKSClusterName: Nombre de su clúster de EKS (no el EKSCluster ID)

    • EKS CodeBuildAppName: Nombre de la aplicación Helm chart (aws-proserve-java-greeting)

    • WorkerNodeRoleARN de EKS: ARN de la función de IAM de los nodos de trabajo de Amazon EKS

    • EKS WorkerNodeRoleName: Nombre de la función de IAM asignada a los nodos de trabajo de Amazon EKS

    • EcrDockerRepository: Nombre del repositorio de Amazon ECR donde se almacenarán las imágenes de Docker de su código

    • EmailRecipient: dirección de correo electrónico a la que se deben enviar las notificaciones de compilación

    • EnvType: Entorno (por ejemplo, dev, test o prod)

    • SourceRepoName: Nombre del CodeCommit repositorio, donde reside tu código

  4. Elija Siguiente. Utilice la configuración predeterminada para las Configure stack options (Opciones de configuración de pila) y, a continuación, elija Next (Siguiente).

  5. En la sección Revisar, compruebe los detalles de la CloudFormation plantilla y la pila de AWS y, a continuación, seleccione Siguiente.

  6. Seleccione Crear pila

  7. Durante la implementación de la CloudFormation pila, el propietario de la dirección de correo electrónico que proporcionó en los parámetros recibirá un mensaje para suscribirse a un tema de SNS. Para suscribirse a Amazon SNS, el propietario debe elegir el enlace del mensaje.

  8. Una vez creada la pila, abra la pestaña Salidas de la pila y, a continuación, registre el valor ARN de la clave de salida EksCodeBuildkubeRoleARN. Este valor de ARN de IAM se necesitará más adelante para proporcionar al CodeBuild rol de IAM permisos para implementar cargas de trabajo en el clúster de Amazon EKS.

AWS DevOps
TareaDescripciónHabilidades requeridas

Active la integración de Aqua Security.

Este paso es necesario para cargar los hallazgos de vulnerabilidad de imágenes de Docker reportados por Trivy a Security Hub. Como AWS CloudFormation no admite las integraciones de Security Hub, este proceso debe realizarse manualmente.

  1. Abra la consola de AWS Security Hub y vaya a Integraciones.

  2. Busque Aqua Security y seleccione Aqua Security: Aqua Security.

  3. Seleccione Aceptar los resultados.

Administrador DevOps e ingeniero de AWS
TareaDescripciónHabilidades requeridas

Permite CodeBuild ejecutar comandos Helm o kubectl en el clúster de Amazon EKS.

CodeBuild Para autenticarse y utilizar Helm o kubectl comandos con el clúster EKS, debe añadir las funciones de IAM al. aws-auth ConfigMapEn este caso, añada el ARN del rol de IAMEksCodeBuildkubeRoleARN, que es el rol de IAM creado para que el CodeBuild servicio acceda al clúster de EKS e implemente cargas de trabajo en él. Esta es una actividad que se realiza una vez.

Importante: El siguiente procedimiento debe completarse antes de la fase de aprobación de la implementación. CodePipeline

  1. Abra el script de intérprete de comandos cf_templates/kube_aws_auth_configmap_patch.sh en su entorno Amazon Linux o macOS.

  2. Autentifíquese en el clúster de Amazon EKS ejecutando el siguiente comando.

    aws eks --region <aws-region> update-kubeconfig --name <eks-cluster-name>
  3. Ejecute el script de intérprete de comandos mediante el siguiente comando, sustituyendo <rolearn-eks-codebuild-kubectl> por el valor ARN EksCodeBuildkubeRoleARN que registró anteriormente.

    bash cf_templates/kube_aws_auth_configmap_patch.sh <rolearn-eks-codebuild-kubectl> 

aws_auth ConfigMap se configura y se concede el acceso.

DevOps
TareaDescripciónHabilidades requeridas

Compruebe que la canalización de CI/CD se inicie automáticamente.

  1. La fase de CodeSecurity análisis del proceso suele fallar si Checkov detecta vulnerabilidades en los gráficos de Dockerfile o Helm. Sin embargo, el objetivo de este ejemplo es establecer un proceso de identificación de posibles vulnerabilidades de seguridad en lugar de corregirlas mediante el proceso de CI/CD, que suele ser un proceso. DevSecOps En el archivo buildspec/buildspec_secscan.yaml, el comando checkov usa la marca --soft-fail para evitar que la canalización falle.

    - echo -e "\n Running Dockerfile Scan" - checkov -f code/app/Dockerfile --framework dockerfile --soft-fail --summary-position bottom - echo -e "\n Running Scan of Helm Chart files" - cp -pv helm_charts/$EKS_CODEBUILD_APP_NAME/values.dev.yaml helm_charts/$EKS_CODEBUILD_APP_NAME/values.yaml - checkov -d helm_charts/$EKS_CODEBUILD_APP_NAME --framework helm --soft-fail --summary-position bottom - rm -rfv helm_charts/$EKS_CODEBUILD_APP_NAME/values.yaml

    Para que la canalización falle cuando se detecten vulnerabilidades en los gráficos de Dockerfile y Helm, se debe eliminar la opción --soft-fail del comando checkov. Luego, los desarrolladores o ingenieros pueden corregir las vulnerabilidades y registrar los cambios en el repositorio de código CodeCommit fuente.

  2. Al igual que en CodeSecurity Scan, la fase de creación utiliza Aqua Security Trivy para identificar las vulnerabilidades de imagen de Docker ALTAS y CRÍTICAS antes de enviar la aplicación a Amazon ECR. En este ejemplo, no estamos haciendo que la canalización de vulnerabilidades en las imágenes de Docker fracase. En el archivo buildspec/buildspec.yml, el comando trivy incluye una marca --exit-code con un valor 0, por lo que la canalización no falla cuando se informa de vulnerabilidades de imagen de Docker con niveles ALTOS o CRÍTICOS.

    - AWS_REGION=$AWS_DEFAULT_REGION AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID trivy -d image --no-progress --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL --format template --template "@securityhub/asff.tpl" -o securityhub/report.asff $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$CODEBUILD_RESOLVED_SOURCE_VERSION

    Para que la canalización falle cuando se detecten vulnerabilidades HIGH, CRTICAL, cambie el valor de --exit-code a 1.

    Luego, los desarrolladores o ingenieros pueden corregir las vulnerabilidades y registrar los cambios en el repositorio de código fuente. CodeCommit

  3. Las vulnerabilidades de imagen de Docker reportadas por Aqua Security Trivy se cargan en Security Hub. En la consola de AWS Security Hub, vaya a Resultados. Filtre los resultados con Registrar Estado= Activo y Producto = Aqua Security. Esto mostrará una lista de las vulnerabilidades de imagen de Docker en Security Hub. Las vulnerabilidades pueden tardar entre 15 minutos y 1 hora en aparecer en Security Hub.

Para obtener más información sobre cómo iniciar la canalización mediante el uso CodePipeline, consulte Iniciar una canalización en CodePipeline, Iniciar una canalización manualmente e Iniciar una canalización según un cronograma en la CodePipeline documentación de AWS.

DevOps

Apruebe la implementación.

  1. Una vez finalizada la fase de construcción, hay una puerta de aprobación de la implementación. El revisor o el administrador de versiones deben inspeccionar la compilación y, si se cumplen todos los requisitos, aprobarla. Este es el enfoque recomendado para los equipos que utilizan la entrega continua para la implementación de aplicaciones.

  2. Tras la aprobación, la canalización inicia la fase de implementación.

  3. Una vez finalizada la fase de implementación, el CodeBuild registro de esta etapa proporciona la URL de la aplicación. Utilice la URL para validar que la aplicación esté lista.

DevOps

Valide la creación de perfiles de la aplicación.

Una vez finalizada la implementación y desplegado el pod de la aplicación en Amazon EKS, el agente Amazon CodeGuru Profiler configurado en la aplicación intentará enviar los datos de creación de perfiles de la aplicación (CPU, resumen del montón, latencia y cuellos de botella) a Amazon Profiler. CodeGuru

Para la implementación inicial de una aplicación, Amazon CodeGuru Profiler tarda unos 15 minutos en visualizar los datos de creación de perfiles.

AWS DevOps

Recursos relacionados

Información adicional

CodeGuru No se debe confundir Profiler con el servicio AWS X-Ray en términos de funcionalidad. CodeGuru Se prefiere Profiler para identificar las líneas de códigos más caras, que pueden provocar cuellos de botella o problemas de seguridad, y corregirlas antes de que se conviertan en un riesgo potencial. El servicio AWS X-Ray sirve para monitorear el rendimiento de las aplicaciones.

En este patrón, las reglas de eventos se asocian al bus de eventos predeterminado. Si es necesario, puede ampliar el patrón para utilizar un bus de eventos personalizado.

Este patrón utiliza CodeGuru Reviewer como una herramienta estática de pruebas de seguridad de aplicaciones (SAST) para el código de la aplicación. También puedes usar esta canalización para otras herramientas, como SonarQube Checkmarx. Se pueden añadir las instrucciones de configuración de digitalización correspondientes a cualquiera de estas herramientasbuildspec/buildspec_secscan.yaml, sustituyendo las instrucciones de digitalización de CodeGuru.