View a markdown version of this page

Desenvolvimento e implantação simplificados de bots do Amazon Lex usando um fluxo de trabalho automatizado - Recomendações da AWS

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

Arquitetura

O diagrama a seguir mostra a arquitetura de alto nível e os principais componentes da solução.

Fluxo de trabalho para automatizar o desenvolvimento e a implantação de bots do Amazon Lex.

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:

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

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

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

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

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

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

  7. 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. O repositório do código contém os seguintes arquivos e pastas:

  • 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

TarefaDescriptionHabilidades necessárias

Configure o ambiente local do CDK.

  1. Para clonar o repositório correspondente a este padrão e ir até o diretório prerequisite execute o seguinte comando:

    git clone https://github.com/aws-samples/management-framework-sample-for-amazon-lex.git cd management-framework-sample-for-amazon-lex
  2. Para instalar e ativar o ambiente virtual do Python, execute o seguinte comando que instala as dependências do CDK localmente na pasta do projeto, em vez de globalmente:

    pip install virtualenv python<version> -m venv .venv source .venv/bin/activate python -m pip install -r requirements.txt
AWS DevOps

Crie um perfil entre contas no ambiente devops.

A devops conta é responsável por hospedar e gerenciar os CI/CD pipelines. Para permitir que os CI/CD pipelines interajam com os prod ambientes dev e, execute os comandos a seguir para criar uma função entre contas na devops conta.

cdk bootstrap --profile=devops cdk deploy LexMgmtDevopsRoleStack -c dev-account-id=2222222222222 -c prod-account-id=333333333333 --profile=devops
AWS DevOps

Crie um perfil entre contas no ambiente dev.

Crie um perfil do IAM na conta dev com as permissões necessárias para permitir que a conta devops assuma esse perfil. O CI/CD pipeline usa essa função para realizar ações na dev conta, como implantar e gerenciar recursos de bots do Amazon Lex.

Para criar o perfil do IAM, execute os seguintes comandos:

cdk bootstrap --profile=dev cdk deploy LexMgmtCrossaccountRoleStack -c devops-account-id=1111111111111 --profile=dev
AWS DevOps

Crie um perfil entre contas no ambiente prod.

Crie um perfil do IAM na conta prod com as permissões necessárias para permitir que a conta devops assuma esse perfil. O CI/CD pipeline usa essa função para realizar ações na prod conta, como implantar e gerenciar recursos de bots do Amazon Lex.

cdk bootstrap --profile=prod cdk deploy LexMgmtCrossaccountRoleStack -c devops-account-id=1111111111111 --profile=prod
AWS DevOps

Crie pipelines no ambiente devops.

Para gerenciar o fluxo de trabalho de desenvolvimento de bots do Amazon Lex, execute o comando a seguir para configurar pipelines no ambiente devops.

cdk deploy LexMgmtWorkflowStack -c devops-account-id=1111111111111 -c dev-account-id=2222222222222 -c prod-account-id=333333333333 --profile=devops
AWS DevOps
TarefaDescriptionHabilidades necessárias

Defina a versão inicial do bot principal.

Para definir a versão inicial do bot principal, acione o pipeline BaselineBotPipeline.

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
TarefaDescriptionHabilidades necessárias

Crie o bot de tíquetes para desenvolver e testar um recurso.

TicketBot é uma nova instância de bot importada da definição de bot principal existente na ramificação de recursos. Essa abordagem garante que o novo bot tenha todas as funcionalidades e configurações atuais do bot principal.

Para definir a versão inicial do bot de tíquete, acione o pipeline CreateTicketBotPipeline.

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/. Para obter mais informações, consulte Testing a bot using the console na documentação do Amazon Lex.

Com a instância TicketBot, agora você pode adicionar, modificar ou estender a funcionalidade do bot para implementar o novo recurso. Por exemplo, você pode criar ou modificar intenções, enunciados, slots e fluxos de diálogo. Para obter mais informações, consulte Adding intents na documentação do Amazon Lex.

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

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 rebase do Git. Essa operação basicamente reproduz as confirmações da ramificação de recursos em cima das confirmações mais recentes da ramificação principal, garantindo que a ramificação de recursos inclua todas as alterações mais recentes.

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

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

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:

  • Teste o bot manualmente usando o console do Amazon Lex.

  • Use uma abordagem automatizada utilizando estruturas e ferramentas de teste que possam simular as interações do usuário e afirmar as respostas esperadas.

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 TicketBot isolada, faça o seguinte:

  1. Confirme as alterações na ramificação de recursos correspondente no sistema de controle de versão.

  2. Para mesclar a ramificação de recursos na ramificação principal, crie uma solicitação de pull (PR). Essa PR serve como uma solicitação para revisar e incorporar as alterações na base de código principal.

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

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
TarefaDescriptionHabilidades necessárias

Importe a definição mais recente do bot principal para o ambiente dev.

Para importar a definição mais recente do bot principal na ramificação principal para o ambiente dev, acione o pipeline DeployBotDevPipeline.

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

Para importar a definição de bot mais recente na ramificação principal para o ambiente prod, forneça a referência da marcação da tarefa anterior como parâmetro e acione o pipeline DeployBotProdPipeline.

O pipeline importa a definição de bot mais recente de uma marcação específica para o ambiente prod.

AWS DevOps

Solução de problemas

ProblemaSoluçã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.

Recursos relacionados