O blog da AWS
Migração de projetos serverless entre frameworks de IaC usando assistentes de IA
Por Debasis Rath, Sr. SSA, Serverless e Joshua Smith, Sr. Solutions Architect.
Os aplicativos Serverless geralmente usam serviços de infraestrutura como código (IaC) para definir e gerenciar seus recursos de nuvem. As equipes escolhem diferentes ferramentas de IaC com base em suas habilidades, ferramentas existentes ou necessidades de conformidade. À medida que os aplicativos crescem, pode surgir a necessidade de alternar entre os formatos de IaC para adotar novos recursos ou se alinhar aos padrões em evolução. Os desenvolvedores estão adotando rapidamente assistentes de codificação baseados em IA para ajudar com essas demandas em evolução. Nesta postagem, focamos no Amazon Q Developer como exemplo, mas a orientação se aplica amplamente a qualquer assistente de codificação. O Amazon Q Developer é um assistente baseado em IA que ajuda os desenvolvedores com tarefas de geração de código, resolução de problemas e desenvolvimento dentro do ecossistema da Amazon Web Services (AWS). A interface de linha de comando (CLI) do Amazon Q Developer permite que os desenvolvedores convertam definições de infraestrutura entre estruturas populares de IaC. Esta postagem demonstra como usar o Amazon Q CLI para traduzir um projeto Serverless de um IaC de origem, como o Serverless Framework versão 3, para uma estrutura de IaC preferida, como o AWS Serverless Application Model (AWS SAM). Para tornar a demonstração mais acessível, escolhemos um projeto de baixa complexidade. No entanto, o Amazon Q CLI oferece suporte à tradução bidirecional em vários formatos de IaC. Explicamos como migrar uma arquitetura de referência para mostrar como o processo funciona, conforme mostrado na figura a seguir.
Esse exemplo de projeto define a implantação de uma API REST usando o Amazon API Gateway, atuando como um proxy do Amazon Simple Storage Service (Amazon S3) para operações de gravação. Ele inclui configuração de chave de API, validador básico de solicitações, invocação do AWS Lambda em eventos do Amazon S3 e habilita o Amazon CloudWatch Logs e o AWS X-Ray Tracing para API Gateway e Lambda usando o kit de ferramentas de desenvolvedor Powertools for Lambda.
Visão geral da solução
O Amazon Q Developer é treinado nas melhores práticas da AWS e fornece uma experiência baseada em IA por meio de sua CLI. Ele automatiza a tradução do IaC reduzindo o esforço manual, minimizando os erros e preservando a intenção original em todas as estruturas. O processo de tradução segue quatro etapas: avaliar, traduzir, testar, refinar e implantar. A figura a seguir mostra esse fluxo de trabalho.
- Avalie: analise os projetos existentes do Serverless Framework para verificar a compatibilidade e a prontidão.
- Traduzir: converta a configuração do Serverless Framework em modelos do AWS SAM usando o Amazon Q Developer CLI.
- Teste e refine: valide e melhore os modelos traduzidos para garantir a precisão funcional e as melhores práticas.
- Implantar: empacote e implante os modelos finalizados do AWS SAM nos ambientes da AWS.
Pré-requisitos e considerações
Os pré-requisitos e as considerações a seguir são necessários para concluir essa solução.
Defina regras personalizadas para orientar a automação com o Amazon Q Developer
O Amazon Q Developer usa um modelo baseado em regras para automatizar tarefas que é guiado por regras definidas pelo usuário. Essas regras codificam os padrões da sua equipe para garantir que a automação seja consistente e repetível. Você pode criar uma biblioteca de regras personalizadas para aplicar as melhores práticas ao usar o Amazon Q em seu ambiente de desenvolvimento integrado (IDE) ou por meio da CLI. Para ajudar você a começar, incluímos um arquivo com exemplos de regras que fornece uma configuração básica. Esse arquivo define a estrutura da saída, a sequência das etapas de automação e as melhores práticas a serem seguidas durante cada fase do projeto. Você pode personalizar essas regras para se alinharem às diretrizes arquitetônicas, às políticas de segurança ou às necessidades de conformidade da sua organização.
Entenda e categorize a complexidade do projeto
Os projetos Serverless diferem em escala e estrutura, o que afeta diretamente a forma como você os avalia. Projetos menores com configuração mínima e algumas funções normalmente apresentam menos desafios. Projetos maiores e mais complexos podem incluir dezenas de funções do Lambda, camadas compartilhadas e integrações entre serviços como Amazon Simple Queue Service (Amazon SQS), Amazon DynamoDB ou Amazon EventBridge. Comece categorizando o projeto como de baixa, média ou alta complexidade com base em fatores como o número de funções, a diversidade de fontes de eventos e a presença de configurações compartilhadas. Use essa categorização para priorizar e definir o escopo de seus esforços de avaliação. Para cargas de trabalho complexas, avalie componentes individuais separadamente para reduzir a área de superfície para solução de problemas e remediação.
Gerencie ferramentas e plug-ins específicos da estrutura
Plug-ins ou dependências em diferentes estruturas de IaC ampliam a funcionalidade principal ou introduzem comportamentos personalizados. O AWS SAM oferece suporte a recursos semelhantes, mas de uma forma diferente. Por exemplo, você pode usar o AWS SAM, mas para recursos não encontrados no AWS SAM, você pode usar macros do AWS CloudFormation ou recursos personalizados apoiados pelo Lambda. Durante a avaliação, identifique todos os plug-ins ativos e documente sua finalidade e pontos de integração. Avalie se a funcionalidade de cada plug-in pode ser replicada usando serviços nativos da AWS ou recursos personalizados no AWS SAM. Para padrões comuns, como otimizações de pacotes, aquecedores de funções ou ganchos de implantação personalizados, considere usar as macros e os recursos personalizados do CloudFormation. Quando a funcionalidade do plug-in não puder ser traduzida diretamente, anote-a em seu relatório de avaliação para intervenção manual. O mapeamento claro da função de cada plug-in ajuda a manter a paridade e reduz as surpresas durante a implantação no novo ambiente.
Com tudo isso, você está pronto para iniciar a conversão.
Avalie com o Amazon Q Developer
Os diagramas animados incluídos nesta publicação oferecem imagens passo a passo para explicar o comportamento do Amazon Q em todo o fluxo de trabalho. Lembre-se de que você já definiu regras para o Amazon Q para cada fase. Agora, sua solicitação para o Amazon Q está clara. Neste momento, o Amazon Q tem contexto suficiente para obter resultados mais nítidos e determinísticos. Use o aviso a seguir para iniciar a avaliação:
Prompt
Figura 3. Etapa de avaliação usando o Amazon Q Developer
Após a avaliação, o Amazon Q Developer gera recomendações de tradução com base nas melhores práticas da AWS. Ele produz um arquivo evaluation_summary.md
com informações detalhadas, orientações de mapeamento e considerações técnicas para converter componentes em recursos do AWS SAM. O relatório serve como base para a próxima etapa: tradução automática para os recursos do AWS SAM.
Traduza usando o Amazon Q Developer
Depois de concluir a avaliação, comece a tradução usando as regras básicas definidas em .amazonq/rules/translation_rules.md.
Essas regras orientam a conversão e garantem a consistência com os resultados da avaliação. O Amazon Q Developer CLI usa essas regras para analisar o arquivo serverless.yml
, criar uma nova estrutura de projeto e gerar um modelo completo do AWS SAM. Durante a tradução, o Amazon Q Developer executa as seguintes ações:
- Converte cada função do Lambda em uma
AWS: :Serverless: :Function
, preservando o tempo de execução, o manipulador (handler), a memória, o tempo limite e as configurações do ambiente. - Traduz fontes de eventos, como APIs HTTP e Amazon SQS, em definições de eventos do SAM.
- Mapeia políticas e permissões do AWS Identity and Access Management (IAM) em recursos compatíveis com o CloudFormation.
- Remove configurações somente para desenvolvimento, como o plug-in
serverless-offline
.
O Serverless Framework v3 geralmente usa a orquestração e os recursos personalizados do CloudFormation para fornecer determinados recursos. Por exemplo, ele pode usar recursos personalizados para provisionar notificações de bucket do S3. O Amazon Q detecta esses padrões durante a avaliação e os traduz em recursos explícitos e bem estruturados do AWS SAM. Isso garante a paridade funcional no IAC de destino. Use o seguinte prompt para iniciar a tradução:
Prompt
Figura 4. Tradução usando o Amazon Q Developer
Após a tradução, o Amazon Q Developer produz um projeto completo do AWS SAM com scripts de teste e documentação. O projeto oferece suporte a testes locais, implantação automatizada, gerenciamento consistente de recursos e integração nativa com ferramentas da AWS. Você também recebe um arquivo development_summary.md
com uma visão geral estruturada do projeto e instruções de teste passo a passo.
O Amazon Q Developer substitui recursos criados implicitamente por plug-ins do Serverless Framework (como o Serverless Lift ou recursos personalizados para lidar com dependências circulares) por definições explícitas do CloudFormation. Para oferecer suporte a plug-ins personalizados ou não compatíveis, defina a lógica de tradução em .amazonq/rules/development_rules.md
. Especifique mapeamentos ou sinalize recursos para análise manual. Isso maximiza a automação e destaca as exceções no início do fluxo de trabalho.
Teste e refine usando o Amazon Q Developer
Valide o aplicativo AWS SAM traduzido usando as regras de teste locais definidas em .amazonq/rules/local_testing_rules.md
. Essas regras orientam a simulação e a verificação de alta fidelidade.
O Amazon Q Developer gera comandos de teste que usam a CLI do AWS SAM para replicar o comportamento do mundo real. Ele usa o sam local invoke
para testar as funções do Lambda e o sam local start-api
para simular chamadas da API HTTP. Isso garante que o aplicativo traduzido se comporte conforme o esperado quando comparado ao projeto original do Serverless Framework.
Para simular eventos do Amazon S3, provisionar buckets temporários do S3 e instruir o Amazon Q Developer a referenciá-los durante o teste, ele permite a validação completa de ponta a ponta combinando interações reais do Amazon S3 com a execução de uma função local. Use o seguinte prompt para começar o teste:
Figura 5. Etapa de teste e refinamento usando o Amazon Q Developer
Use o AWS SAM Accelerate com o sam sync
para executar testes de integração baseados na nuvem em um ambiente inferior após concluir a validação local. Isso complementa os testes iniciais e ajuda a detectar problemas de tempo de execução antes da implantação. A combinação da automação do Amazon Q Developer com a CLI do AWS SAM permite acelerar os ciclos de feedback e garantir a precisão funcional no ambiente de nuvem.
Implantar
O aplicativo AWS SAM traduzido e testado está pronto, portanto, a etapa final é a implantação. Usando o AWS SAM CLI, empacote e implante o aplicativo em um ambiente da AWS onde ele se torne totalmente operacional. Comece executando o seguinte: sam build
Esse comando prepara o aplicativo para implantação empacotando o código da função Lambda, resolvendo dependências e criando artefatos de construção no diretório .aws-sam
. Em seguida, implante o aplicativo usando o seguinte:
A sinalização --guided
orienta você na configuração inicial, como nome da pilha, região da AWS e recursos necessários, como criação de funções do IAM. Quando concluído, o CloudFormation provisiona todos os recursos definidos no template.yaml
, como funções Lambda, endpoints do API Gateway, filas SQS e políticas do IAM. Aqui está a aparência do resultado da implantação:
O AWS SAM enfatiza definições explícitas, como nomes e parâmetros de recursos. Portanto, usar a implantação guiada do AWS SAM aqui ajuda a apresentar análises de conjuntos de alterações para verificar essas alterações. Agora que você traduziu e testou seu aplicativo AWS SAM, verifique sua paridade com a pilha original do Serverless Framework. Compare as saídas do CloudFormation — endpoints do API Gateway, nomes de bucket do S3, nomes de recursos do Lambda Amazon (ARNs) e URLs de fila — e automatize a integração ou os testes A/B para confirmar a equivalência funcional. Em seguida, implante a versão do AWS SAM usando uma versão canary, monitore o desempenho e as métricas do usuário e mude o tráfego gradualmente para minimizar os riscos.
Limpando
Se você não precisar mais dos recursos da AWS que criou ao executar este exemplo, poderá removê-los excluindo a pilha do CloudFormation que você implantou.
Para excluir a pilha do CloudFormation, use o comando sam delete:
Conclusão
Nesta postagem, você aprendeu como o Amazon Q Developer CLI pode simplificar a tradução do IaC usando um exemplo de migração do Serverless Framework para o AWS SAM. O uso de interfaces de conversação baseadas em IA e a profunda integração com o conhecimento da AWS significa que o Amazon Q Developer reduz substancialmente o esforço manual e os possíveis erros envolvidos nessas traduções. A avaliação, a tradução, o teste e a implantação abrangentes podem ser difíceis de acelerar, mas isso pode ser simplificado com as novas ferramentas generativas de IA da AWS.
Para obter mais informações sobre o Amazon Q, você pode conferir o Amazon Q Developer. Para obter mais recursos de aprendizado serverless, visite Serverless Land. Para encontrar mais padrões, acesse diretamente a Coleção de padrões serverless.
Este conteúdo foi traduzido da postagem original do blog, que pode ser encontrada aqui.
Biografia dos Autores
![]() |
Debasis Rath, Sr. SSA, Serverless |
![]() |
Joshua Smith, Sr. Solutions Architect |
Biografia do Tradutor
![]() |
Rodrigo Peres é Arquiteto de Soluções na AWS, com mais de 20 anos de experiência trabalhando com arquitetura de soluções, desenvolvimento de sistemas e modernização de sistemas legados. |
Biografia do Revisor
![]() |
Daniel Abib é arquiteto de soluções sênior na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e segurança. Ele trabalha apoiando clientes corporativos, ajudando-os em sua jornada para a nuvem. |