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.
Optimice el desarrollo y la implementación de los bots de Amazon Lex mediante un flujo de trabajo automatizado
Creado por Balaji Panneerselvam (AWS), Anand Junnani (AWS), Attila Dancso (AWS), James O'Hara (AWS) y Pavan Dusanapudi (AWS)
Resumen
Desarrollar e implementar los bots conversacionales de Amazon Lex puede ser un desafío cuando se trata de administrar múltiples funciones, 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 gestión eficiente del ciclo de vida de los bots de las siguientes maneras:
Permita el desarrollo simultáneo de múltiples funciones: con un flujo de trabajo automatizado, los desarrolladores pueden trabajar en diferentes funciones en paralelo en ramas separadas. Luego, los cambios se pueden combinar e implementar sin bloquear otros trabajos.
Utilice la interfaz de usuario de la consola Amazon Lex: los desarrolladores pueden utilizar la sencilla consola 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 todos 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 los gastos generales 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 un control de versiones y un registro de auditoría. Los desarrolladores individuales rastrean los cambios, a diferencia de lo que ocurre cuando solo se utilizan AWS Management Console o APIs se modifican los bots almacenados en él AWS.
Al automatizar el proceso de lanzamiento de los bots de Amazon Lex, los equipos pueden ofrecer funciones más rápido con menos riesgos y esfuerzos. Los bots permanecen bajo el control de versiones en lugar de estar aislados en la consola Amazon Lex.
Requisitos previos y limitaciones
Requisitos previos
El flujo de trabajo incluye varios entornos 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 su entorno de implementación o canalización.
Git se instaló
y configuró en una estación de trabajo local para el control de 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 supone que la canalización de integración y entrega continuas (CI/CD) cuenta con los permisos necesarios para registrar los 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 plantillas. AWS CloudFormation Debes crear la primera iteración del bot y depositarla en el repositorio antes de que el flujo de trabajo automatizado pueda hacerse cargo.
Conflictos de fusió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 fusión al integrar cambios de diferentes ramas. 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.124.0 o superior
AWS SDK for Python (Boto3)1.28 o superior
Arquitectura
El siguiente diagrama muestra la arquitectura de alto nivel y los componentes clave de la solución.

Los componentes clave 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— Uno Cuenta de AWS dedicado a alojar las canalizaciones de CI/CD 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 de bots de Amazon Lex, donde los bots de tickets son bots de funciones específicas desarrollados por equipos o desarrolladores individuales y el bot principal es el bot básico que integra todas las funciones.
El diagrama de arquitectura ilustra el siguiente flujo de trabajo:
Bot principal de referencia: el punto de partida del flujo de trabajo es basar el bot principal en el entorno de desarrollo (desarrollo). El bot principal sirve de base para futuros desarrollos y adiciones de funciones.
Crear un bot de tickets: cuando se requiere una nueva función 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.
Exportar bot de tickets: una vez finalizado el trabajo en el bot de tickets, se exporta desde el servicio Amazon Lex. A continuación, la sucursal que contiene el bot de tickets pasa de estar a la sucursal principal. Este paso garantiza que se incorporen todos los cambios realizados en el bot principal mientras el bot de venta de entradas estaba en desarrollo, lo que reduce los posibles conflictos.
Importar el bot de tickets rebasado y validar: el bot de tickets rebasado 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 realiza correctamente, se crea una solicitud de extracción (PR) para fusionar los cambios del bot de tickets con la sucursal principal.
Eliminar el bot de tickets: una vez que los cambios se hayan fusionado correctamente en la sucursal 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 funciones o cambios, se implementa en el entorno de desarrollo. Aquí, se somete a pruebas exhaustivas para garantizar que todas las funcionalidades funcionen según lo esperado.
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 despliega en el entorno de producción. Este paso es la etapa final del flujo de trabajo, en la que las nuevas funciones están disponibles para los usuarios finales.
Automatizar y escalar
El flujo de trabajo automatizado permite a los desarrolladores trabajar en diferentes funciones en paralelo, cada una en ramas separadas. Esto facilita el desarrollo simultáneo, lo que permite a los equipos colaborar de forma eficaz y ofrecer funciones con mayor rapidez. Al estar las sucursales 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 el despliegue y la promoción de versiones de bots en diferentes entornos, como el desarrollo, las pruebas y la 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 implementarlos en producción.
Al utilizar AWS CodePipeline y otros Servicios de AWS, el flujo de trabajo automatizado puede ampliarse para adaptarse a las crecientes cargas de trabajo y al tamaño de los equipos.
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. AWS CloudFormation La implementación de ejemplo de este patrón usa 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 AWS 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 CodeBuildes un servicio de compilación totalmente administrado que le ayuda a compilar el código fuente, ejecutar pruebas unitarias y producir artefactos listos para su implementación. Este patrón se utiliza CodeBuild para crear y empaquetar los artefactos de implementación.
AWS CodePipelinele ayuda a modelar y configurar rápidamente las diferentes etapas de una versión de software y a automatizar los pasos necesarios para publicar los cambios de software de forma 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 le ayuda a interactuar Servicios de AWS mediante comandos en el shell de la 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 for 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
prerequisite
carpeta: contiene definiciones de CloudFormation pila (utilizando AWS CDK) para configurar los recursos y entornos necesarios.prerequisite/lexmgmtworkflow
folder: directorio principal del proyecto Lex Management Workflow, que incluye las definiciones de pila y el código Python.prerequisite/tests
— Contiene pruebas unitarias.src
folder: 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 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 funciones multicuentas y principios de acceso con privilegios mínimos para garantizar el acceso controlado entre entornos.
La infraestructura como código
Revise y actualice periódicamente el código de infraestructura para adaptarlo a las mejores prácticas y a los requisitos en evolución.
Establezca una estrategia clara de ramificación y fusió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 Amazon Lex o los marcos de pruebas automatizadas para validar las configuraciones y la funcionalidad de los bots antes de ascender 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 entre los bots.
Supervise los eventos de la canalización, los estados de despliegue y las métricas de rendimiento de los bots para identificar y abordar los problemas con prontitud.
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 periódicamente 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 periódicamente las funciones, 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 de CDK local. |
| AWS DevOps |
Cree una función multicuenta en el | La
| AWS DevOps |
Cree una función multicuenta en el | Cree un rol de IAM en la Para crear el rol de IAM, ejecute los siguientes comandos:
| AWS DevOps |
Cree una función multicuenta en el | Cree un rol de IAM en la
| AWS DevOps |
Cree canalizaciones en el | Para gestionar el flujo de trabajo de desarrollo de los bots de Amazon Lex, ejecute el siguiente comando para configurar las canalizaciones en el
| AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Defina la versión inicial del bot principal. | Para definir la versión inicial del bot principal, activa la La canalización implementa la definición básica del bot que está definida 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 función. |
Para definir la versión inicial del bot de tickets, activa la La canalización crea una nueva rama de funciones en el sistema de control de versiones y crea una nueva instancia de ticket bot basada en el bot principal. | Desarrollador de Lex Bot |
Desarrolle y pruebe la función Ticket Bot. | Para desarrollar y probar la función, inicie sesión en la consola Amazon Lex AWS Management Console y ábrala en https://console.aws.amazon.com/lex/ Con la | Desarrollador de Lex Bot |
Exporte la definición del 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, activa la 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 funciones del sistema de control de versiones. | Desarrollador de Lex Bot |
Rebase la rama de funciones de la rama principal más reciente. | Durante el desarrollo de una nueva función, es posible que la rama principal haya recibido otros cambios por parte de diferentes desarrolladores o equipos. Para incorporar estos cambios en la rama de funciones, realiza una | Desarrollador de Lex Bot |
Importa y valida el bot de tickets rebasado. | Tras cambiar la base de la rama de funciones, debes 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 sucursal reubicada. Para importar el bot de tickets rebasado, activa la La canalización importa a la instancia los archivos.json con la definición del bot de tickets que se encuentran en la rama de funciones del | Desarrollador de Lex Bot |
Valide la definición de bot rebasada. | Tras importar la definición de bot rebasada, es fundamental validar su funcionalidad. Debes asegurarte de que la nueva función 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. Puedes realizar la validación de cualquiera de las siguientes maneras:
| Desarrollador de Lex Bot |
Combina la rama de funciones con la rama principal. | Tras desarrollar y probar la nueva función en la
| Desarrollador de Lex Bot, administrador de repositorios |
Elimina la rama de funciones y el bot de tickets. | Cuando una rama de funciones se haya fusionado correctamente con la rama principal, elimina la rama de funciones y el bot de tickets del repositorio de código fuente. Para eliminar la rama de funciones y el bot de tickets, activa la 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 futuras ramas de funciones. | Desarrollador de Lex Bot |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Importe la última definición de bot principal al | Para importar al La canalización también crea una etiqueta git tras su aprobación. | AWS DevOps |
Importe la última definición de bot principal al | Para importar al La canalización importa la definición de bot más reciente de una etiqueta específica al | AWS DevOps |
Solució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 el acceso entre cuentas, utilice las funciones y políticas de IAM. Cree funciones de IAM en las cuentas de destino y adjunte políticas a las funciones que concedan los permisos necesarios. A continuación, asuma estas funciones desde la cuenta en la que está desplegado el bot Amazon Lex. Para obtener más información, consulte los permisos de IAM necesarios para importar y los permisos de IAM necesarios para exportar bots en Lex V2 en la documentación de Amazon Lex. |