As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Desenvolvimento e implantação simplificados de bots do Amazon Lex usando um fluxo de trabalho automatizado
Balaji Panneerselvam, Attila Dancso, Pavan Dusanapudi, Anand Jumnani e James O'Hara, Amazon Web Services
Resumo
Desenvolver e implantar bots conversacionais do Amazon Lex pode ser um desafio quando você está tentando gerenciar vários recursos, desenvolvedores e ambientes. Um fluxo de trabalho automatizado usando princípios de infraestrutura como código (IaC) pode ajudar a agilizar o processo. Este padrão pode ajudar a melhorar a produtividade dos desenvolvedores do Amazon Lex e permitir o gerenciamento eficiente do ciclo de vida dos bots das seguintes formas:
Permitir o desenvolvimento simultâneo de vários recursos: com um fluxo de trabalho automatizado, os desenvolvedores podem trabalhar em diferentes recursos paralelamente em ramificações separadas. As alterações podem então ser mescladas e implantadas sem bloquear outros trabalhos.
Usar a interface de usuário do console do Amazon Lex: os desenvolvedores podem usar o console fácil de usar do Amazon Lex para criar e testar bots. Os bots são então descritos no código da infraestrutura para implantação
Promover bots em todos os ambientes: o fluxo de trabalho automatiza a promoção de versões de bots de ambientes inferiores, como de desenvolvimento e teste até a produção. Essa abordagem reduz o risco e a sobrecarga das promoções manuais.
Manter o controle de versão: o gerenciamento das definições de bots no Git, em vez de apenas por meio do serviço Amazon Lex, fornece controle de versão e uma trilha de auditoria. As alterações são rastreadas para desenvolvedores individuais, ao contrário de quando usamos apenas os bots armazenados Console de gerenciamento da AWS ou APIs modificados AWS.
Ao automatizar o processo de lançamento de bots do Amazon Lex, as equipes podem fornecer recursos mais rapidamente com menos risco e esforço. Os bots permanecem sob controle de versão, em vez de isolados no console do Amazon Lex.
Pré-requisitos e limitações
Pré-requisitos
O fluxo de trabalho envolve vários Contas da AWS ambientes diferentes (desenvolvimento, produção e DevOps), o que requer gerenciamento de contas e configurações de acesso entre contas.
Python 3.9 disponível em seu ambiente de implantação ou pipeline.
Git instalado
e configurado em uma estação de trabalho local para controle de origem. AWS Command Line Interface (AWS CLI) instalado e configurado para autenticação usando a linha de comando ou o Python.
Limitações
Acesso ao repositório: o fluxo de trabalho pressupõe que o pipeline de integração contínua e entrega contínua (CI/CD) tenha as permissões necessárias para confirmar alterações no repositório do código-fonte.
Versão inicial do bot — As ferramentas exigem que uma versão inicial do bot seja implantada usando AWS CloudFormation modelos. Você deve criar a primeira iteração do bot e confirmá-la no repositório para que o fluxo de trabalho automatizado possa assumir o controle.
Conflitos de mesclagem: embora o fluxo de trabalho tenha como objetivo permitir o desenvolvimento simultâneo, ainda existe a possibilidade de conflitos de mesclagem ao integrar alterações de diferentes ramificações. A resolução de conflitos nas configurações de bots pode exigir intervenção manual.
Versões do produto
Python 3.9
ou posterior AWS CDK v2 2.124.0 ou superior
AWS SDK para Python (Boto3) 1.28 ou posterior
Arquitetura
O diagrama a seguir mostra a arquitetura de alto nível e os principais componentes da solução.

Os componentes principais incluem o seguinte:
Repositório de bots do Lex: um repositório Git que armazena as definições de IaC para os bots do Amazon Lex.
DevOps— Um Conta da AWS dedicado a abrigar os CI/CD dutos e os recursos relacionados para o processo de desenvolvimento e implantação.
Pipelines — As AWS CodePipeline instâncias que automatizam vários estágios do ciclo de vida de desenvolvimento e implantação de bots, como criar um novo bot, exportar a definição de um bot, importar uma definição de bot e excluir um bot.
Bots de tíquetes e bot principal: os recursos de bots do Amazon Lex, em que os bots de tíquetes se referem a bots de recursos específicos desenvolvidos por equipes ou desenvolvedores individuais e o bot principal se refere ao bot básico que integra todos os recursos.
O diagrama de arquitetura ilustra o seguinte fluxo de trabalho:
Definir a linha de base do bot principal: o ponto de partida do fluxo de trabalho é definir a linha de base do bot principal no ambiente de desenvolvimento (Dev). O bot principal serve como base para futuros desenvolvimentos e adições de recursos.
Criar o bot de tíquetes: quando um novo recurso ou alteração é necessário, um bot de tíquete é criado. O bot de tíquete é essencialmente uma cópia ou ramificação do bot principal em que os desenvolvedores podem trabalhar sem afetar a versão principal.
Exportar o bot de tíquetes: depois que o trabalho no bot de tíquetes estiver concluído, ele será exportado do serviço Amazon Lex. Em seguida, a ramificação que contém o bot de tíquete é realocada da ramificação principal. Essa etapa garante que todas as alterações feitas no bot principal enquanto o bot de tíquete estava em desenvolvimento sejam incorporadas, reduzindo possíveis conflitos.
Importar bot de tíquete realocado e validar: o bot de tíquete realocado é importado de volta para o ambiente de desenvolvimento e validado para garantir que funcione corretamente com as alterações mais recentes da ramificação principal. Se a validação for bem-sucedida, uma solicitação de pull (PR) será criada para mesclar as alterações do bot de tíquete na ramificação principal.
Excluir bot de tíquete: depois que as alterações forem mescladas com sucesso na ramificação principal, o bot de tíquete não será mais necessário. O bot de tíquete pode ser excluído para manter o ambiente limpo e gerenciável.
Implantar o bot principal no ambiente de desenvolvimento e testar: o bot principal atualizado, agora incluindo os novos recursos ou alterações, é implantado no ambiente de desenvolvimento. Aqui, ele passa por testes completos para garantir que todas as funcionalidades funcionem conforme o esperado.
Implantar o bot principal no ambiente de produção: depois que os testes no ambiente de desenvolvimento forem concluídos e bem-sucedidos, o bot principal será implantado no ambiente de produção. Essa etapa é o estágio final do fluxo de trabalho, no qual os novos recursos ficam disponíveis para os usuários finais.
Automação e escala
O fluxo de trabalho automatizado permite que os desenvolvedores trabalhem paralelamente em diferentes recursos, cada um em ramificações separadas. Isso facilita o desenvolvimento simultâneo, permitindo que as equipes colaborem de forma eficaz e forneçam recursos com mais rapidez. Com ramificações isoladas umas das outras, as mudanças podem ser mescladas e implantadas sem bloquear nem interferir em outros trabalhos em andamento.
O fluxo de trabalho automatiza a implantação e a promoção de versões de bots em diferentes ambientes, como desenvolvimento, teste e produção.
Armazenar as definições de bots em um sistema de controle de versão como o Git fornece uma trilha de auditoria abrangente e permite uma colaboração eficiente. As alterações são rastreadas para desenvolvedores individuais, garantindo transparência e responsabilidade em todo o ciclo de vida do desenvolvimento. Essa abordagem também facilita as revisões de código, permitindo que as equipes identifiquem e resolvam problemas antes da implantação na produção.
Usando AWS CodePipeline e outros Serviços da AWS, o fluxo de trabalho automatizado pode ser escalado para acomodar o aumento das cargas de trabalho e do tamanho das equipes.
Ferramentas
Serviços da AWS
AWS Cloud Development Kit (AWS CDK)é uma estrutura de desenvolvimento de software de código aberto para definir Nuvem AWS infraestrutura em código usando linguagens de programação familiares e provisionando-a por meio dela. CloudFormation O exemplo de implementação neste padrão usa Python.
AWS CDK Interface de linha de comando (AWS CDK CLI) - O AWS CDK kit de ferramentas é a principal ferramenta para interagir com seu aplicativo. AWS CDK Ele executa seu aplicativo, interroga o modelo de aplicativo que você definiu e produz e implanta os CloudFormation modelos gerados pelo CDK.
AWS CloudFormationajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS Esse padrão é usado CloudFormation para implantar as configurações de bots do Amazon Lex e os recursos relacionados usando a infraestrutura como código.
O AWS CodeBuild é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação. Esse padrão é usado CodeBuild para criar e empacotar os artefatos de implantação.
O AWS CodePipeline ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações. Esse padrão é usado CodePipeline para orquestrar o pipeline de entrega contínua.
AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
O Amazon Lex V2 serve AWS service (Serviço da AWS) para criar interfaces conversacionais (bots) para aplicativos usando voz e texto.
AWS SDK para Python (Boto3)
é um kit de desenvolvimento de software que ajuda você a integrar seu aplicativo, biblioteca ou script Python com o. Serviços da AWS
Outras ferramentas
O Git
é um sistema de código aberto de controle de versão distribuído.
Repositório de código
O código desse padrão está disponível no repositório GitHub management-framework-sample-for-amazon-lex
prerequisitepasta — Contém definições de CloudFormation pilha (usando o AWS CDK) para configurar os recursos e ambientes necessários.Pasta
prerequisite/lexmgmtworkflow: diretório principal do projeto Lex Management Workflow, incluindo definições de pilha e código Python.prerequisite/tests: contém testes de unidade.Pasta
src: diretório de código-fonte, incluindo o wrapper e utilitários de gerenciamento de bots do Amazon Lex.src/dialogue_lambda: diretório de código-fonte da função do Lambda do hook de diálogo que intercepta e processa as entradas do usuário durante uma conversa com um bot do Amazon Lex.
Práticas recomendadas
Separação de tarefas
Mantenha uma separação clara de responsabilidades entre DevOps os ambientes de desenvolvimento e produção.
Use separadamente Contas da AWS para cada ambiente para impor limites adequados de isolamento e segurança.
Use perfis entre contas e princípios de acesso com privilégios mínimos para garantir o acesso controlado entre ambientes.
Infraestrutura como código
Revise e atualize regularmente o código da infraestrutura para se alinhar às práticas recomendadas e aos requisitos dinâmicos.
Estabeleça uma estratégia clara de ramificação e mesclagem para o repositório de código-fonte.
Teste e validação
Implemente testes automatizados em vários estágios do pipeline para detectar problemas no início do ciclo de desenvolvimento.
Use o console do Amazon Lex ou estruturas automatizadas de teste para validar as configurações e a funcionalidade de bots antes de promovê-los para ambientes superiores.
Considere a implementação de portas de aprovação manual para implantações em ambientes críticos ou de produção.
Monitoramento e registro
Configure mecanismos de monitoramento e registro em log para pipelines, implantações e interações de bots.
Monitore eventos do pipeline, status de implantação e métricas de performance de bots para identificar e resolver problemas imediatamente.
Use serviços da AWS, como Amazon CloudWatch, AWS CloudTrail, e AWS X-Ray para registro e monitoramento centralizados.
Revise e analise regularmente a performance, a eficiência e a eficácia do fluxo de trabalho automatizado.
Segurança e conformidade
Implemente práticas de codificação seguras e siga as melhores práticas AWS de segurança para o desenvolvimento e a implantação de bots do Amazon Lex.
Analise e atualize regularmente as permissões, as políticas e os perfis do IAM para se alinhar ao princípio de privilégio mínimo.
Considere integrar a verificação de segurança e as verificações de conformidade aos pipelines.
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Configure o ambiente local do CDK. |
| AWS DevOps |
Crie um perfil entre contas no ambiente | A
| AWS DevOps |
Crie um perfil entre contas no ambiente | Crie um perfil do IAM na conta Para criar o perfil do IAM, execute os seguintes comandos:
| AWS DevOps |
Crie um perfil entre contas no ambiente | Crie um perfil do IAM na conta
| AWS DevOps |
Crie pipelines no ambiente | Para gerenciar o fluxo de trabalho de desenvolvimento de bots do Amazon Lex, execute o comando a seguir para configurar pipelines no ambiente
| AWS DevOps |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Defina a versão inicial do bot principal. | Para definir a versão inicial do bot principal, acione o pipeline O pipeline implanta a definição básica de bot definida no CloudFormation modelo, exporta a definição principal do bot como arquivos.json e armazena o código principal do bot em um sistema de controle de versão. | AWS DevOps |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Crie o bot de tíquetes para desenvolver e testar um recurso. |
Para definir a versão inicial do bot de tíquete, acione o pipeline O pipeline cria uma nova ramificação de recurso no sistema de controle de versão e cria uma nova instância de bot de tíquete com base no bot principal. | Desenvolvedor de bots do Lex |
Desenvolva e teste o recurso de bot de tíquete. | Para desenvolver e testar o recurso, faça login Console de gerenciamento da AWS e abra o console do Amazon Lex em https://console.aws.amazon.com/lex/ Com a instância | Desenvolvedor de bots do Lex |
Exporte a definição do bot de tíquete. | A definição de bot exportada é essencialmente uma representação da configuração e funcionalidade do bot no formato JSON. Para exportar a definição do bot de tíquete, acione o pipeline O pipeline exporta a definição do bot de tíquete como um arquivo .json e armazena o código do bot de tíquete em uma ramificação de recurso no sistema de controle de versão. | Desenvolvedor de bots do Lex |
Realoque a ramificação do recurso da ramificação principal mais recente. | Durante o desenvolvimento de um novo recurso, a ramificação principal pode ter recebido outras alterações de diferentes desenvolvedores ou equipes. Para incorporar essas alterações na ramificação de recursos, execute uma operação | Desenvolvedor de bots do Lex |
Importe e valide o bot de tíquete realocado. | Depois de realocar a ramificação de recursos, você deverá importá-la para a instância do bot de tíquete. Essa importação atualiza o bot de tíquete existente com as alterações mais recentes da ramificação realocada. Para importar o bot de tíquete realocado, acione o pipeline O pipeline importa os arquivos .json de definição do bot de tíquete na ramificação de recursos do sistema de controle de versão para a instância | Desenvolvedor de bots do Lex |
Valide a definição do bot realocado. | Depois de importar a definição de bot realocado, é fundamental validar sua funcionalidade. Você precisa garantir que o novo recurso funcione conforme o esperado e não entre em conflito com a funcionalidade existente. Essa validação normalmente envolve testar o bot com vários cenários de entrada, verificar as respostas e confirmar se o bot se comporta conforme o esperado. Você pode realizar a validação de uma das seguintes maneiras:
| Desenvolvedor de bots do Lex |
Mescle a ramificação de recursos na ramificação principal. | Depois de desenvolver e testar o novo recurso na instância
| Desenvolvedor de bots do Lex, administrador de repositório |
Exclua a ramificação de recursos e o bot de tíquete. | Depois que uma ramificação de recursos for mesclada com sucesso na ramificação principal, exclua a ramificação de recursos e o bot de tíquete do repositório de código-fonte. Para excluir a ramificação de recursos e o bot de tíquete, acione o pipeline O pipeline remove os recursos temporários de bot que foram criados durante o processo de desenvolvimento (por exemplo, o bot de tíquete). Essa ação ajuda a manter o repositório limpo e a evitar confusões ou conflitos com futuras ramificações de recursos. | Desenvolvedor de bots do Lex |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Importe a definição mais recente do bot principal para o ambiente | Para importar a definição mais recente do bot principal na ramificação principal para o ambiente O pipeline também cria uma marcação git na aprovação. | AWS DevOps |
Importe a definição mais recente do bot principal para o ambiente | Para importar a definição de bot mais recente na ramificação principal para o ambiente O pipeline importa a definição de bot mais recente de uma marcação específica para o ambiente | AWS DevOps |
Solução de problemas
| Problema | Solução |
|---|---|
Quando você implanta bots do Amazon Lex em diferentes Contas da AWS, os serviços de ferramentas devem ter as permissões necessárias para acessar recursos nessas contas. | Para conceder acesso entre contas, use políticas e perfis do (IAM). Crie perfis do IAM nas contas de destino e anexe as políticas aos perfis que concedem as permissões necessárias. Em seguida, assuma esses perfis na conta em que o bot do Amazon Lex está implantado. Para obter mais informações, consulte IAM permissions required to import e IAM permissions required to export bots in Lex V2 na documentação do Amazon Lex. |