O blog da AWS
Crie, empacote e publique .NET C# Lambda Functions com o AWS CDK
Por Ulili Nhaga, Arquiteto de aplicativos em nuvem na AWS
Visão geral da arquitetura
Nesta postagem do blog, mostraremos como configurar uma arquitetura básica serverless usando o AWS CDK. Essa arquitetura criará uma API REST usando o Amazon API Gateway, a integração com Lambda proxy e a API Web do ASP.NET no Lambda. A API Web do ASP.NET é uma estrutura para criar APIs da Web sobre o .NET, onde você pode hospedar e executar suas funções Lambda. Essa implementação do AWS CDK criará três funções Lambda com essa arquitetura similar, todas escritas em .NET e mantidas como projetos de API Web ASP.NET separados. Dependendo do caminho da URL solicitado, o API Gateway roteará o tráfego para a função específica da Lambda.
Passo a passo do código
Pré-requisitos
- Visual Studio Code (ou seu IDE preferido)
- Conta da AWS
- SDK .NET 6
- Cloud Development Kit (CDK) da AWS
- GIT
- Docker
Para permitir que o aplicativo AWS CDK compile e implante uma função Lambda escrita em .NET, você deve primeiro criar um objeto da classe BundlingOptions. O construtor Lambda usará esse objeto para compilar e gerar arquivos binários do código-fonte das funções Lambda .NET durante o tempo de sintetização do Projeto CDK da AWS.
O exemplo a seguir mostra como você pode definir a classe BundlingOptions para a função Lambda .NET. Estas são as propriedades relevantes que você precisará definir:
- Image – deve receber uma imagem de container da AWS que corresponda ao Lambda runtime
- User – defina como “root” a permissão do runtime para criar e gerar o arquivo binário de saída
- OutputType – define como o CDK deve esperar o pacote. Para esta demonstração, ele está definido como Arquivo ZIP.
- Command – está esperando as instruções de compilação e do pacote. No exemplo de trecho do código a seguir, você pode ver como eu o implementei usando o utilitário Lambda.Tools – afim de ajudar com os comandos .NET para o empacotamento de funções Lambda.
Com essa definição do objeto BundlingOption, o AWS CDK cuidará do processo de implantação de um projeto de função Lambda .NET. O código de exemplo a seguir é um exemplo de como enviar essa definição do objeto BundlingOption para a construção da função no AWS CDK:
Implantação e demonstração
O repositório do GitHub “aws-samples/aws-cdk-build-package-publish-dotnet-lambda-function” fornece a demonstração completa, para que você possa implantá-la e fazer solicitações a três exemplos de API para ver a implementação.
Implantação
Siga as etapas abaixo para implantar e testar as funções do .NET Lambda:
- Clone o repositório do GitHub
2. Abra uma sessão de terminal e navegue até a pasta infra dentro do código-fonte do projeto
3. Na pasta Infra, digite CDK deploy usando seu perfil de conta da AWS
Demo
Quando a implantação estiver concluída, copie o Endpoint da saída do terminal. O formato deve ser semelhante a: https://xxxyyyzzz .execute-api.us-east-1.amazonaws.com/prod/. Use esse endpoint em seu cliente de API REST favorito para fazer a solicitação. Esta demonstração está usando o Thunder Client. Ou você pode colar o URL na barra de endereço do navegador e receber as mensagens dessa forma. O exemplo a seguir mostra uma solicitação e uma resposta:
Ou você pode usar CURL para fazer a solicitação, conforme mostrado no exemplo a seguir:
Para testar a outra função Lambda, altere a URL adicionando /functiontwo ou /functionthree no final da URL original. Por exemplo, use https://xxxyyyzzz .execute-api.us-east-1.amazonaws.com/prod/functiontwo e faça uma solicitação.
Ou você pode usar CURL para fazer a solicitação, conforme mostrado no exemplo a seguir:
Cleaning Up
Siga uma das duas maneiras de remover a implantação:
- Acesse o AWS Management Console, navegue até a seção de stacks do CloudFormation e exclua a stack: InfraStack
- Na linha de comando, digite CDK destroy no mesmo diretório do qual você implantou.
Conclusão
Nesta postagem do blog, você aprendeu a simplificar a criação, o empacotamento e a publicação de funções Lambda .NET usando o AWS CDK. Você também pode aplicar etapas semelhantes a outros runtimes do Lambda que exigiam a compilação do código, como Java ou Go. Essa abordagem simplifica o processo ao lidar com a compilação do código da função Lambda .NET e o provisionamento da infraestrutura, permitindo que você crie e implante a funções Lambda sem etapas extras para compilação fora do processo de implantação do AWS CDK.
Este artigo foi traduzido do Blog da AWS em Inglês.
Sobre o autor
Ulili Nhaga é arquiteto de aplicativos em nuvem na Amazon Web Services em San Diego, Califórnia. Ele ajuda os clientes a migrar, modernizar, arquitetar e criar aplicativos nativos em nuvem altamente escaláveis na AWS. Fora do trabalho, Ulili adora jogar futebol, correr, andar de bicicleta, fazer churrasco brasileiro e aproveitar o tempo na praia.
Revisores