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.
Simplificación del desarrollo y la implementación de los bots de Amazon Lex mediante un flujo de trabajo automatizado
Balaji Panneerselvam, Attila Dancso, Pavan Dusanapudi, Anand Junnani y James O'Hara, Amazon Web Services
Resumen
Desarrollar e implementar los bots conversacionales de Amazon Lex puede ser un desafío cuando se trata de administrar varias características, desarrolladores y entornos. Un flujo de trabajo automatizado que utilice los principios de la infraestructura como código (IaC) puede ayudar a agilizar el proceso. Este patrón puede ayudar a mejorar la productividad de los desarrolladores de Amazon Lex y permitir una administración eficiente del ciclo de vida de los bots de las maneras siguientes:
Permita el desarrollo simultáneo de varias características: con un flujo de trabajo automatizado, los desarrolladores pueden trabajar en distintas características en paralelo en ramas independientes. Luego, los cambios se pueden combinar e implementar sin bloquear otros trabajos.
Utilice la IU de la consola de Amazon Lex: los desarrolladores pueden utilizar la consola sencilla de Amazon Lex para crear y probar bots. A continuación, se describen los bots en el código de infraestructura para su implementación.
Promocione los bots en los entornos: el flujo de trabajo automatiza la promoción de las versiones de los bots desde entornos más bajos, como el de desarrollo y las pruebas, hasta la producción. Este enfoque reduce el riesgo y la sobrecarga de las promociones manuales.
Mantenga el control de versiones: la administración de las definiciones de bots en Git, en lugar de hacerlo únicamente a través del servicio Amazon Lex, le proporciona el control de versiones y un registro de auditoría. Los cambios se rastrean a los desarrolladores individuales, a diferencia de cuando solo se utilizan Consola de administración de AWS o APIs para modificar los bots almacenados en ellos AWS.
Al automatizar el proceso de lanzamiento de los bots de Amazon Lex, los equipos pueden ofrecer características más rápido, con menos riesgos y esfuerzos. Los bots permanecen bajo control de versiones en lugar de estar aislados en la consola de Amazon Lex.
Requisitos previos y limitaciones
Requisitos previos
El flujo de trabajo incluye varios Cuentas de AWS para diferentes entornos (desarrollo, producción y DevOps), lo que requiere configuraciones de administración de cuentas y acceso entre cuentas.
Python 3.9 está disponible en el entorno de implementación o canalización.
Git se instaló
y configuró en una estación de trabajo local para el control del código fuente. AWS Command Line Interface (AWS CLI) instalado y configurado para autenticarse mediante la línea de comandos o Python.
Limitaciones
Acceso al repositorio: el flujo de trabajo presupone que la canalización de integración continua y entrega continua (CI/CD) tiene los permisos necesarios para llevar a cabo cambios en el repositorio de código fuente.
Versión inicial del bot: las herramientas requieren que se implemente una versión inicial del bot mediante AWS CloudFormation plantillas. Debe crear la primera iteración del bot y enviarla al repositorio antes de que el flujo de trabajo automatizado pueda tomar el control.
Conflictos de combinación: aunque el flujo de trabajo tiene como objetivo permitir el desarrollo simultáneo, aún existe la posibilidad de que se produzcan conflictos de combinación al integrar cambios de ramas distintas. La resolución de conflictos en las configuraciones de los bots puede requerir una intervención manual.
Versiones de producto
Python 3.9
o superior AWS CDK v2 2.12.4.0 o superior
AWS SDK para Python (Boto3)1,28 o superior
Arquitectura
En el diagrama siguiente se muestra la arquitectura de alto nivel y los componentes clave de la solución.

Entre los componentes clave se incluyen los siguientes:
Repositorio de bots de Lex: un repositorio de Git que almacena las definiciones de IaC para los bots de Amazon Lex.
DevOps— Una Cuenta de AWS dedicada a alojar los CI/CD oleoductos y los recursos relacionados para el proceso de desarrollo e implementación.
Canalizaciones: AWS CodePipeline instancias que automatizan varias etapas del ciclo de vida de desarrollo e implementación de los bots, como la creación de un nuevo bot, la exportación de la definición de un bot, la importación de una definición de bot y la eliminación de un bot.
Bots de tickets y bot principal: los recursos del bot de Amazon Lex, en los que los bots de tickets son bots con características específicas desarrollados por equipos o desarrolladores individuales, y el bot principal es el bot básico que integra todas las características.
El diagrama de arquitectura ilustra el flujo de trabajo siguiente:
Bot principal de referencia: el punto de partida del flujo de trabajo es basar el bot principal en el entorno de desarrollo (Dev). El bot principal sirve de base para desarrollos futuros y adiciones de características.
Cree un bot de tickets: cuando es necesaria una característica nueva o un cambio, se crea un bot de tickets. El bot de tickets es básicamente una copia o una rama del bot principal en la que los desarrolladores pueden trabajar sin que ello afecte a la versión principal.
Exporte el bot de tickets: una vez finalizado el trabajo en el bot de tickets, se exporta desde el servicio Amazon Lex. A continuación, se hace un cambio de base de la rama que contiene el bot de tickets desde la rama principal. Este paso garantiza que se incorporen todos los cambios hechos en el bot principal mientras el bot de tickets se encontraba en desarrollo, lo que reduce los conflictos posibles.
Importe el bot de tickets con cambio de base y valide: el bot de tickets con cambio de base se importa de nuevo al entorno de desarrollo y se valida para garantizar que funciona correctamente con los cambios más recientes de la rama principal. Si la validación se hace correctamente, se crea una solicitud de extracción (PR) para combinar los cambios del bot de tickets con la rama principal.
Elimine el bot de tickets: una vez que los cambios se hayan combinado correctamente en la rama principal, el bot de tickets ya no será necesario. El bot de tickets se puede eliminar para mantener el entorno limpio y manejable.
Implemente el bot principal en el entorno de desarrollo y pruébelo: el bot principal actualizado, que ahora incluye las nuevas características o cambios, se implementa en el entorno de desarrollo. Aquí se somete a pruebas exhaustivas para garantizar que todas las funcionalidades responden según lo previsto.
Implemente el bot principal en el entorno de producción: una vez finalizadas y satisfactorias las pruebas en el entorno de desarrollo, el bot principal se implementa en el entorno de producción. Este paso es la etapa final del flujo de trabajo, en la que las características nuevas están disponibles para los usuarios finales.
Automatización y escala
El flujo de trabajo automatizado permite a los desarrolladores trabajar en características distintas en paralelo, cada una en ramas independientes. Esto facilita el desarrollo simultáneo, lo que permite a los equipos colaborar de manera eficaz y ofrecer características con mayor rapidez. Al estar las ramas aisladas unas de otras, los cambios se pueden combinar e implementar sin bloquear ni interferir con otros trabajos en curso.
El flujo de trabajo automatiza la implementación y la promoción de versiones de bots en entornos distintos, por ejemplo, desarrollo, pruebas y producción.
El almacenamiento de las definiciones de bots en un sistema de control de versiones como Git proporciona un registro de auditoría completo y permite una colaboración eficiente. Los desarrolladores individuales controlan los cambios, lo que garantiza la transparencia y la responsabilidad durante todo el ciclo de vida del desarrollo. Este enfoque también facilita las revisiones del código, lo que permite a los equipos identificar y abordar los problemas antes de la implementación en la producción.
Al usar AWS CodePipeline y otros Servicios de AWS, el flujo de trabajo automatizado se puede escalar para adaptarse a cargas de trabajo y tamaños de equipos cada vez mayores.
Tools (Herramientas)
Servicios de AWS
AWS Cloud Development Kit (AWS CDK)es un marco de desarrollo de software de código abierto para definir la Nube de AWS infraestructura en el código mediante el uso de lenguajes de programación conocidos y aprovisionarla mediante el aprovisionamiento. CloudFormation La implementación de muestra de este patrón utiliza Python.
AWS CDK Interfaz de línea de comandos (AWS CDK CLI): el AWS CDK kit de herramientas es la herramienta principal para interactuar con AWS CDK la aplicación. Ejecuta tu aplicación, consulta el modelo de aplicación que has definido y produce e implementa las CloudFormation plantillas generadas por la CDK.
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 país. Cuentas de AWS Regiones de AWS Este patrón se utiliza CloudFormation para implementar las configuraciones de bots de Amazon Lex y los recursos relacionados utilizando la infraestructura como código.
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. Este patrón se utiliza CodeBuild para crear y empaquetar los artefactos de implementación.
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. Este patrón se utiliza CodePipeline para organizar el proceso de entrega continua.
AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que te ayuda a interactuar Servicios de AWS mediante comandos en el shell de tu línea de comandos.
AWS Identity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
Amazon Lex V2 sirve Servicio de AWS para crear interfaces de conversación (bots) para aplicaciones que utilizan voz y texto.
AWS SDK para Python (Boto3)
es un kit de desarrollo de software que le ayuda a integrar su aplicación, biblioteca o script de Python con Servicios de AWS.
Otras herramientas
Git
es un sistema de control de versiones distribuido de código abierto.
Repositorio de código
El código de este patrón está disponible en el repositorio GitHub management-framework-sample-for-amazon-lex
prerequisitecarpeta: contiene las definiciones de CloudFormation pila (utilizando la AWS CDK) para configurar los recursos y entornos necesarios.Carpeta
prerequisite/lexmgmtworkflow: directorio principal del proyecto de Lex Management Workflow, que incluye las definiciones de pila y el código Python.prerequisite/tests: contiene pruebas unitarias.src: directorio de código fuente, que incluye el contenedor y las utilidades de administración de bots de Amazon Lex.src/dialogue_lambda: directorio de códigos fuente de la función de Lambda del enlace de diálogo que intercepta y procesa las entradas de los usuarios durante una conversación con un bot de Amazon Lex.
Prácticas recomendadas
Separación de preocupaciones
Mantenga una clara separación de responsabilidades entre DevOps los entornos de desarrollo y producción.
Úselo Cuentas de AWS por separado para cada entorno a fin de reforzar los límites de aislamiento y seguridad adecuados.
Utilice roles entre cuentas y principios de acceso con privilegios mínimos para garantizar el acceso controlado entre entornos.
La infraestructura como código
Revise y actualice de manera periódica el código de infraestructura para adaptarlo a las prácticas recomendadas y a los requisitos en evolución.
Establezca una estrategia clara de ramificación y combinación para el repositorio de código fuente
Pruebas y validación
Implemente pruebas automatizadas en varias etapas del proceso para detectar los problemas al principio del ciclo de desarrollo.
Utilice la consola de Amazon Lex o los marcos de pruebas automatizadas para validar las configuraciones y la funcionalidad de los bots antes de pasarlo a entornos superiores.
Considere la posibilidad de implementar puertas de aprobación manuales para las implementaciones en entornos críticos o de producción.
Supervisión y registro
Configure mecanismos de supervisión y registro para las canalizaciones, las implementaciones y las interacciones de bots.
Supervise los eventos de la canalización, los estados de la implementación y las métricas de rendimiento de los bots para identificar y abordar los problemas de inmediato.
Utilice los servicios de AWS, como Amazon CloudWatch AWS CloudTrail, y AWS X-Ray para el registro y la supervisión centralizados.
Revise y analice de manera periódica el rendimiento, la eficiencia y la eficacia del flujo de trabajo automatizado.
Seguridad y conformidad
Implemente prácticas de codificación seguras y siga las prácticas recomendadas de AWS seguridad para el desarrollo e implementación de los bots Amazon Lex.
Revise y actualice de manera periódica los roles, las políticas y los permisos de IAM para ajustarlos al principio de privilegios mínimos.
Considere la posibilidad de integrar el análisis de seguridad y las comprobaciones de cumplimiento en los procesos.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Configure el entorno local de CDK. |
| AWS DevOps |
Cree un rol entre cuentas en el entorno de | La
| AWS DevOps |
Cree un rol entre cuentas en el entorno de | Cree un rol de IAM en la cuenta de Para crear el rol de IAM, ejecute los comandos siguientes:
| AWS DevOps |
Cree un rol entre cuentas en el entorno de | Cree un rol de IAM en la cuenta de
| AWS DevOps |
Cree canalizaciones en el entorno de | Para administrar el flujo de trabajo de desarrollo de los bots de Amazon Lex, ejecute el comando siguiente para configurar las canalizaciones en el entorno de
| AWS DevOps |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Defina la versión inicial del bot principal. | Para definir la versión inicial del bot principal, desencadene la canalización de La canalización implementa la definición básica del bot que se define en la CloudFormation plantilla, exporta la definición principal del bot en forma de archivos.json y almacena el código del bot principal en un sistema de control de versiones. | AWS DevOps |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Cree el bot de tickets para desarrollar y probar una característica. |
Para definir la versión inicial del bot de tickets, desencadene la canalización La canalización crea una rama nueva de características en el sistema de control de versiones y crea una instancia nueva de bot de tickets basada en el bot principal. | Desarrollador de bots de Lex |
Desarrolle y pruebe la característica del bot de tickets. | Para desarrollar y probar la función, inicie sesión en la consola Amazon Lex Consola de administración de AWS y ábrala en https://console.aws.amazon.com/lex/ Con la instancia de | Desarrollador de bots de Lex |
Exporte la definición de bot de tickets. | La definición de bot exportada es básicamente una representación de la configuración y la funcionalidad del bot en formato JSON. Para exportar la definición del bot de tickets, desencadene la canalización La canalización exporta la definición del bot de tickets como archivos .json y almacena el código del bot de tickets en una rama de características del sistema de control de versiones. | Desarrollador de bots de Lex |
Cambie la base de la rama de características desde la última rama principal. | Durante el desarrollo de una característica nueva, es posible que la rama principal haya recibido otros cambios por parte de desarrolladores o equipos distintos. Para incorporar estos cambios en la rama de características, haga una operación | Desarrollador de bots de Lex |
Importe y valide el bot de tickets que cambió de base. | Tras cambiar la base de la rama de características, debe importarla a la instancia del bot de tickets. Esta importación actualiza el bot de tickets existente con los cambios más recientes de la rama que cambió de base. Para importar el bot de tickets con nueva base, desencadene la canalización La canalización importa a la instancia de | Desarrollador de bots de Lex |
Valide la definición de bot que cambió de base. | Tras importar la definición de bot con cambio de base, es fundamental validar su funcionalidad. Debe asegurarse de que la característica nueva funcione según lo esperado y no entre en conflicto con la funcionalidad existente. Por lo general, esta validación implica probar el bot con varios escenarios de entrada, comprobar las respuestas y comprobar que el bot se comporta según lo previsto. Puede llevar a cabo la validación de cualquiera de las siguientes maneras:
| Desarrollador de bots de Lex |
Combine la rama de características con la rama principal. | Tras desarrollar y probar la característica nueva en la instancia de
| Desarrollador de bots de Lex, administrador de repositorios |
Elimine la rama de características y el bot de tickets. | Cuando una rama de características se haya combinado correctamente con la rama principal, elimine la rama de características y el bot de tickets del repositorio de código fuente. Para eliminar la rama de características y el bot de tickets, desencadene la canalización La canalización elimina los recursos de bots temporales que se crearon durante el proceso de desarrollo (por ejemplo, el bot de tickets). Esta acción ayuda a mantener un repositorio limpio y a evitar confusiones o conflictos con las ramas de características futuras. | Desarrollador de bots de Lex |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Importe la última definición de bot principal al entorno de | Para importar al entorno de La canalización también crea una etiqueta de git tras su aprobación. | AWS DevOps |
Importe la última definición de bot principal al entorno de | Para importar al entorno de La canalización importa al entorno de | AWS DevOps |
Resolución de problemas
| Problema | Solución |
|---|---|
Al implementar los bots de Amazon Lex en diferentes cuentas Cuentas de AWS, los servicios de herramientas deben tener los permisos necesarios para acceder a los recursos de esas cuentas. | Para conceder acceso entre cuentas, utilice roles y políticas de IAM. Cree roles de IAM en las cuentas de destino y adjunte políticas a los roles que concedan los permisos necesarios. A continuación, asuma estos roles desde la cuenta en la que está implementado el bot de Amazon Lex. Para más información, consulte IAM permissions required to import y IAM permissions required to export bots in Lex V2 en la documentación de Amazon Lex. |