Workloads do .NET no AWS Lambda

MÓDULO 2

Módulo 2: Ferramentas para desenvolvimento em .NET

 MÓDULO DE APRENDIZAGEM

A AWS fornece várias ferramentas para ajudar você a desenvolver funções do Lambda para .NET. Todas são gratuitas e podem ser instaladas diretamente no IDE de sua preferência ou na linha de comando escolhida. As ferramentas não precisam ser configuradas se você já tiver uma conta da AWS configurada em seu computador.

As ferramentas .NET para AWS Lambda estão disponíveis para Visual Studio (somente Windows), Visual Studio Code e Rider. As ferramentas da linha de comando estão disponíveis para Windows, Linux e Mac. O nível de suporte varia entre IDEs e sistemas operacionais. Um resumo das ferramentas disponíveis é fornecido neste módulo, junto com links para downloads relevantes.

 Tempo para a conclusão

60 minutos 

Kit de ferramentas da AWS para Visual Studio

A partir de maio de 2022, o Kit de ferramentas da AWS para o Visual Studio está disponível somente para Windows. Após a instalação, o kit de ferramentas ajudará você a configurá-lo para acessar sua conta da AWS.

Por meio de uma interface de usuário conhecida, o kit de ferramentas permite que você desenvolva, depure, implante, atualize e teste as funções do Lambda por meio de uma interface gráfica no Visual Studio. O kit de ferramentas está disponível para download no Visual Studio 2022, 2019 e 2017.

Instalação

No Visual Studio, acesse o menu Extensão e selecione Gerenciar extensões. À direita, na caixa de pesquisa, digite “Kit de ferramentas da AWS”. No painel de resultados, selecione a extensão “Kit de ferramentas da AWS para Visual Studio” e clique em Baixar. Siga as instruções para instalar a extensão. Talvez seja necessário reiniciar o Visual Studio.

Se preferir, você pode baixar o Kit de ferramentas da AWS diretamente e acessar a documentação do Kit de ferramentas da AWS para o Visual Studio.

Visão geral e atributos principais

Em relação ao serviço do Lambda, o kit de ferramentas fornece dois conjuntos principais de atributos, modelos de projeto para funções do Lambda e ferramentas para auxiliar na implantação, gerenciamento e teste/invocação de funções do Lambda. Além disso, o kit de ferramentas permite gerenciar outros recursos da AWS e implantar aplicações em outros tipos de infraestrutura da AWS, como AWS Fargate, AWS App Runner e AWS Elastic Beanstalk (eles não são abordados neste curso).

O kit de ferramentas adiciona vários modelos de projeto do Lambda para ajudar você a criar uma variedade de funções do Lambda.

O mais simples pega uma string e retorna uma versão em maiúscula dessa string. Essa é uma ótima opção para começar, devido à sua simplicidade, facilidade de implantação e de teste. Em apenas alguns minutos, você poderá ter uma função do Lambda em .NET executada na AWS, enviar solicitações e obter respostas.

No lado mais complexo, há um modelo que fornece uma aplicação Web do .NET 6 completo (com páginas da Web e controladores de API). Quando isso for implantado, a infraestrutura necessária para torná-lo acessível pela Web também será implantada e configurada para você.

Há modelos de projetos de contêineres disponíveis, se essa for sua preferência. Observe que você deve ter o Docker instalado em seu computador para que eles funcionem. Consulte a seção “Escolher o runtime para você”, no módulo 4, para saber por que você pode optar por usar imagens de contêiner com funções do Lambda.

O teste de unidade das funções do Lambda é tão importante quanto testar qualquer outro código. A maioria dos modelos de projeto inclui um projeto de teste que usa o xUnit para testar o código no projeto de código-fonte. Isso facilita o início dos testes de unidade.

Como você pode ver acima, no Visual Studio você também pode publicar suas funções no serviço do AWS Lambda. A funcionalidade de publicação se encarrega de criar um pacote, fazer o upload para o serviço do Lambda, aplicar permissões, criar o endpoint do API Gateway e quaisquer outras etapas necessárias para que seu código seja executado e disponibilizado para invocação. Tudo o que você precisa fazer é escrever o código.

Outro atributo do kit de ferramentas é o AWS Explorer, que permite visualizar e gerenciar muitos dos seus recursos da AWS, como DynamoDB, S3, SNS, filas SQS, EC2 e, é claro, funções do Lambda.

Para abrir o AWS Explorer, acesse o menu Exibir e selecione AWS Explorer.

Em relação às funções do Lambda, o AWS Explorer permite que você:

  • Escolha uma região.
  • Visualize e gerencie as funções do Lambda.
  • Invoque funções do Lambda na AWS, transmitindo todos os parâmetros necessários e visualize a resposta. As ferramentas fornecem amostras de entrada para simular chamadas de vários outros serviços da AWS. Isso é muito útil quando você estiver criando uma função do Lambda que seja acionada por um evento de algum outro serviço, por exemplo, um arquivo sendo criado no S3.
  • Depure uma versão executada localmente de uma função do Lambda.
  • Configure serviços que tenham permissão para acionar uma função do Lambda.
  • Visualize os logs gerados pelas funções do Lambda.

Para invocar uma função do Lambda no kit de ferramentas, abra o AWS Explorer, expanda a seção Lambda, clique com o botão direito na função do Lambda que você deseja executar e selecione Exibir função.

Ali você pode escolher uma solicitação de exemplo na lista suspensa. Esses exemplos permitem simular chamadas de outros serviços da AWS, como API Gateway, S3, SNS etc. Isso permite que você teste de forma fácil e direta as funções do Lambda que são invocadas por eventos de outros serviços.

Você também pode usar sua própria solicitação.

Além disso, todas as ferramentas de linha de comando relacionadas ao Lambda podem ser usadas por meio do terminal.

Se você é novo na AWS, o kit de ferramentas para Visual Studio é a melhor maneira de começar. Ele tem o maior número de atributos de todos os kits de ferramentas disponíveis e é o mais fácil de depurar e fazer implantações. O kit de ferramentas da AWS para Visual Studio também funciona com o Visual Studio Community Edition, que está disponível gratuitamente. Isso, junto com o nível gratuito na AWS, é uma ótima combinação para desenvolvedores que forem novos na AWS.

Kit de ferramentas da AWS para Visual Studio Code

O kit de ferramentas da AWS para Visual Studio Code (VS Code) está disponível para todos os sistemas operacionais nos quais o VS Code é executado: Windows, Linux e Mac. O kit de ferramentas oferece uma experiência consistente em todos os três sistemas operacionais.

Embora não seja tão completo quanto o kit de ferramentas da AWS para Visual Studio, o kit de ferramentas da AWS para Visual Studio Code permite que você navegue e interaja com os recursos na AWS.

Você pode navegar pelos buckets do S3 (e editar arquivos), invocar endpoints do API Gateway, implantar no Amazon Elastic Container Registry (ECR), invocar funções do Lambda na AWS e depurá-las localmente (é necessário uma ferramenta dotnet, veja abaixo). Para obter uma lista completa de seus atributos, consulte a documentação do Kit de ferramentas da AWS para Visual Studio Code.

Você também pode usar todas as ferramentas de linha de comando da AWS disponíveis com o VS Code. Provavelmente é assim que você interagirá com a AWS no VS Code. As ferramentas de linha de comando oferecem a flexibilidade de gerenciar todos os serviços da AWS.

Instalação

Na barra lateral principal, clique no ícone de extensões. Na barra de pesquisa que se abre, digite “kit de ferramentas da aws”, e você verá o kit de ferramentas da AWS no topo da lista ou próximo a ele. Clique em Instalar. Talvez seja necessário reiniciar o VS Code.

Visão geral e atributos principais

O kit de ferramentas da AWS para VS Code pode ser adicionado usando o marketplace de extensões VS Code ou baixando-o diretamente da página do Kit de ferramentas da AWS no marketplace do Visual Studio.

Se você já configurou uma conta da AWS em seu computador, o kit de ferramentas se conectará automaticamente à AWS usando essa conta.

Um ícone da AWS aparecerá na barra lateral principal da janela do VS Code. A partir daí, você poderá ver todos os serviços aos quais o kit de ferramentas tem acesso.

O kit de ferramentas não inclui modelos de projeto do Lambda, como o kit de ferramentas do Visual Studio. Em vez disso, você cria uma nova função do Lambda por meio da linha de comando com o novo comando dotnet. Uma lista rica de modelos está disponível. Esses modelos ajudarão você a começar rapidamente com as funções do AWS Lambda. As instruções para instalar os modelos de CLI do dotnet estão abaixo.

Em relação às funções do Lambda, o AWS Explorer permite que você:

  • Invoque funções do Lambda na AWS, transmitindo todos os parâmetros necessários e visualize a resposta. As ferramentas fornecem amostras de entrada para simular chamadas de vários outros serviços da AWS que acionam o Lambda.
  • Depure as funções do Lambda localmente usando a ferramenta de teste AWS .NET Mock Lambda.
  • Faça upload de um arquivo zip de uma função do Lambda no .NET integrada.
  • Visualize os logs gerados pelas funções do Lambda (por meio do CloudWatch Logs).

Para invocar uma função do Lambda no kit de ferramentas, abra o AWS Explorer, expanda a seção Lambda, clique com o botão direito na função do Lambda que você deseja executar e selecione Invocar na AWS.

Isso abrirá uma nova janela na qual você poderá selecionar uma carga de solicitação com a qual invocar a função.

Você também pode escrever sua própria carga de solicitação. A guia de saída do VS Code mostra a carga da resposta.

Além disso, todas as ferramentas de linha de comando relacionadas ao Lambda podem ser usadas com o VS Code por meio do terminal. O comando dotnet lambda é útil principalmente no trabalho com as funções do Lambda no VS Code. Os detalhes e as instruções para a instalação estão na seção “Extensões da AWS para a CLI do .NET (dotnet lambda...)” abaixo.

Kit de ferramentas da AWS para Rider

O kit de ferramentas da AWS para a Rider é um plug-in para o Rider que ajuda você a criar, visualizar e gerenciar os recursos da AWS. Ele tem recursos semelhantes aos do kit de ferramentas da AWS para VS Code, mas inclui uma variedade de modelos de projeto para o .NET para ajudar você a começar a desenvolver funções do Lambda rapidamente.

Instalação

Para instalar o kit de ferramentas da AWS para Rider, abra o menu Arquivo, depois Configurações e Plugins. Procure pelo o kit de ferramentas da AWS e instale-o.

Se você já configurou uma conta da AWS em seu computador, o kit de ferramentas se conectará automaticamente à sua conta da AWS.

Depois de instalado, você terá uma variedade de novos modelos da função do AWS Lambda disponíveis.

Visão geral e atributos principais

Para abrir o AWS Explorer, acesse o menu Exibir, depois Tool Windows e selecione AWS Explorer.

No AWS Explorer, você pode fazer o seguinte em relação às funções do Lambda:

  • Invoque funções do Lambda na AWS, transmitindo todos os parâmetros necessários e visualize a resposta. As ferramentas fornecem amostras de entrada para simular chamadas de vários outros serviços da AWS que acionam o Lambda.
  • Depure as funções do Lambda localmente usando a ferramenta de teste AWS .NET Mock Lambda.
  • Faça upload de um arquivo zip de uma função do Lambda no .NET integrada.
  • Visualize os logs gerados pelas funções do Lambda (por meio do CloudWatch Logs).

Para invocar uma função do Lambda, primeiro abra o AWS Explorer. Para fazer isso, acesse o menu Exibir, depois Tool Windows e selecione AWS Explorer.

No AWS Explorer, expanda a seção Lambda e clique com o botão direito do mouse no Lambda que você deseja invocar. Clique em Executar '[Remoto]...'

Isso abre uma nova janela na qual você pode escolher um modelo para invocar a solicitação.

Ou digite sua própria solicitação.

Clique em Executar. Em seguida, o resultado será exibido.

Além disso, todas as ferramentas de linha de comando do Lambda podem ser usadas com o Rider por meio do terminal.

Ferramentas da linha de comando

Todas as ferramentas da linha de comando disponíveis funcionarão com qualquer shell/terminal/prompt de comando no Windows, Linux e Mac.

Mas para uma experiência consistente em todos os três sistemas operacionais, recomendamos que você use o PowerShell Core. As diferenças na codificação do JSON em diferentes terminais dificultam o fornecimento de exemplos que funcionem em qualquer lugar. Esse problema é eliminado com o uso do PowerShell Core. Dessa forma, todos os exemplos deste curso foram testados usando o PowerShell Core.

Interface da Linha de Comando (CLI) da AWS

A interface da linha de comando (CLI) da AWS é uma ferramenta de código aberto que permite gerenciar todos os recursos da AWS a partir da linha de comando. Você pode executar essas ações manualmente ou executá-las de forma automatizada usando uma linguagem de script de sua preferência. Essa ferramenta está disponível para Windows, Linux e Mac.

Na maioria das circunstâncias, você deve instalar a versão 2 da AWS CLI, pois ela oferece suporte a todos os atributos mais recentes da AWS. A menos que você tenha um motivo específico para usar a versão 1 da CLI da AWS, fique com a versão 2.

Quando novos recursos são adicionados a um serviço da AWS, a ferramenta CLI da AWS será atualizada para permitir que você gerencie esses atributos. A ferramenta CLI da AWS é atualizada com frequência, então fique atento às versões mais recentes.

Instalação

A CLI da AWS está disponível para Windows, Linux e Mac. Seu método de instalação variará dependendo do sistema operacional. As instruções completas podem ser encontradas na página da AWS, Instalar ou atualizar a versão mais recente da CLI da AWS. A AWS desaconselha a instalação da CLI da AWS usando qualquer software de gerenciamento de pacotes. Em vez disso, use o link fornecido acima.

Lembre-se de que você precisa atualizar a CLI da AWS de tempos em tempos para obter os atributos mais recentes.

Para verificar sua versão da CLI da AWS, execute o seguinte comando:

aws --version

Você verá uma resposta semelhante a esta:

aws-cli/2.5.4 Python/3.9.11 Windows/10 exe/AMD64 prompt/off

Isso me informa que a versão 2.5.4 da CLI da AWS está instalada.

Para ver qual é a versão mais recente da CLI da AWS, acesse https://github.com/aws/aws-cli/blob/v2/CHANGELOG.rst. Abaixo de “CHANGELOG” estará a versão mais recente. No momento em que este artigo foi escrito, é 2.7.2, então preciso atualizar minha CLI da AWS!

Visão geral e atributos principais

Com a CLI da AWS, você pode gerenciar todos os seus recursos da AWS. A CLI da AWS inclui recursos poderosos de consulta e filtragem, que podem ajudar você a encontrar os recursos que você está procurando. Como esperado, a CLI da AWS permite listar, visualizar, gerenciar e invocar funções do Lambda.

Uma extensa documentação com exemplos está disponível na Referência de comando da CLI da AWS.

AWS Lambda para .NET Core — Modelos

Com a CLI da AWS, você pode gerenciar todos os seus recursos da AWS. A CLI da AWS inclui recursos poderosos de consulta e filtragem, que podem ajudar você a encontrar os recursos que você está procurando. Como esperado, a CLI da AWS permite listar, visualizar, gerenciar e invocar funções do Lambda.

Uma extensa documentação com exemplos está disponível na Referência de comando da CLI da AWS.

AWS Lambda para .NET Core — Modelos

Ao usar o Visual Studio e o Rider, os kits de ferramentas da AWS fornecem uma variedade de modelos de projetos em C# (e F#) para ajudar você a começar a usar as funções do AWS Lambda.

Esses modelos começam com o mais simples: uma função do Lambda que pega uma string, a converte em maiúsculas e retorna uma string. Muito simples, mas é um bom lugar para começar e ver como é fácil escrever código e implantá-lo no AWS Lambda em questão de minutos.

Modelos mais complexos também estão disponíveis. Eles configuram aplicações Web do .NET completas ou aplicações de API e criam toda a infraestrutura necessária para você: perfis, permissões, buckets, gateways de API etc.

A maioria dos modelos de projeto vem com um diretório src e test, oferecendo imediatamente recursos de teste de unidade que você pode expandir à medida que sua aplicação cresce. Os projetos de teste ajudarão você a aprender como a função do Lambda funciona e fornecerão uma maneira fácil de depurar o código.

Instalação

Para instalar os modelos, execute o seguinte comando:

dotnet new -i "Amazon.Lambda.Templates::*"

Visão geral e atributos principais

Após a conclusão da instalação, você usará o novo comando dotnet para criar novos projetos para a função do Lambda.

Para ver a lista de modelos de projeto disponíveis, execute o seguinte comando:

dotnet new lambda --list

Você verá uma saída parecida com esta (observe que os modelos disponíveis mudam periodicamente):

Você pode notar que o nome abreviado de alguns modelos começa com “sem servidor” e alguns começam com “lambda.”

Aqueles que começam com “sem servidor” usam o AWS Serverless Application Model (SAM) para implantar a função do Lambda e criar a infraestrutura necessária que a função do Lambda usará. O AWS SAM é uma estrutura de código aberto que permite criar aplicações sem servidor na AWS. Além de definir a função do Lambda, com o AWS SAM, você pode definir outros recursos, como gateways de API, bancos de dados e fontes de eventos.

Se você navegar até o diretório projectname/src/projectname, você verá um arquivo chamado serverless.template. Isso define a infraestrutura necessária e como ela está conectada à função do Lambda. Em todos os modelos “sem servidor” listados acima, um API Gateway é usado para rotear as solicitações HTTP para a função do Lambda.

Os modelos que começam com “lambda”. não usam o modelo de aplicação sem servidor e não configuram outra infraestrutura. Se outra infraestrutura for necessária, você mesmo precisará configurá-la. Por exemplo, o modelo de projeto Lambda.kinesis mostra como processar eventos de entrada do Kinesis, mas NÃO cria os streams do Kinesis para você nem adiciona as permissões relevantes necessárias para que o Kinesis acione a função do Lambda.

Para criar um novo projeto com base no modelo lambda.EmptyFunction, execute:

dotnet new lambda.EmptyFunction

As ferramentas são de código aberto e estão disponíveis para visualização no GitHub,

https://github.com/aws/aws-lambda-dotnet#dotnet-cli-templates.

Assim como nas outras ferramentas de linha de comando, você deve ficar de olho nas páginas relevantes do GitHub para ver quando novas versões forem lançadas.

Extensões da AWS para CLI do .NET (dotnet lambda...)

Embora a ferramenta CLI da AWS permita gerenciar todos os recursos da AWS, as extensões da AWS para .NET CLI se concentram especificamente nas funções do Lambda e são invocadas como uma ferramenta .NET, ou seja, dotnet lambda.

Instalação

Para instalar a extensão da CLI da AWS para .NET, execute o seguinte:

dotnet tool install -g Amazon.Lambda.Tools

Para verificar se ele está instalado corretamente, execute:

dotnet lambda

Isso exibirá um resumo dos comandos que você pode usar e um número de versão.

Visão geral e atributos principais

Essa ferramenta funciona em qualquer shell e é especialmente útil quando usada no terminal no Visual Studio Code e no Rider. Ela permite que você execute tarefas comuns relacionadas à função do Lambda.

Por exemplo, para listar todas as funções do Lambda, você pode usar:

dotnet lambda list-functions

Ou para invocar uma função do Lambda, execute:

dotnet lambda invoke-function functionName 

Ela também pode implantar funções do Lambda. Depois de criar uma função do Lambda, com modelos dotnet Lambda (veja acima), você poderá implantar a função na AWS usando -

dotnet lambda deploy-function

Isso iniciará um processo de construção e implantação guiada. A ferramenta solicitará o nome da função do Lambda e o perfil a ser atribuído à função (ou criar um novo). Se você criou um novo perfil, será necessário escolher uma política de permissão para ele. Em seguida, a ferramenta implantará a função na AWS e, em alguns segundos, você poderá invocá-la!

Para ver todas as opções de linha de comando disponíveis, use -

dotnet lambda deploy-function --help

Lembre-se de que por trás de cada comando pode haver muitas funcionalidades, por isso é importante entender que cada linha de comando oferece suporte a várias opções. Por exemplo, o update-function-config é onde você ativa e configura os URLs da função do Lambda. Essa funcionalidade não está disponível no comando deploy-function. Manter-se atualizado com a documentação de lançamento e os atributos mais recentes do serviço do Lambda é importante, pois isso ajudará você a entender e usar os atributos mais recentes.

Embora essa ferramenta seja muito prática e poderosa para gerenciar funções do Lambda ao desenvolver código e aprender sobre a AWS, recomendamos fortemente que você use um processo robusto de CI/CD para implantar em suas aplicações quando elas atingirem um determinado nível de maturidade. A AWS oferece suporte a todas as principais ferramentas de CI/CD.

Ferramentas da AWS para PowerShell

As ferramentas da AWS para PowerShell expõem o AWS SDK para .NET por meio de um conjunto de módulos do PowerShell. Para aqueles que estiverem familiarizados com os scripts do PowerShell, isso os torna uma ferramenta poderosa para escrever scripts de implantação e manutenção.

As ferramentas da AWS para PowerShell podem ser instaladas em Windows, Mac e Linux, oferecendo um conjunto idêntico de atributos nas três plataformas.

As ferramentas estão disponíveis em um único módulo ou em uma versão modularizada, na qual você baixa os módulos necessários conforme necessário.

A versão modularizada é recomendada para ambientes de produção.

Para encontrar mais informações sobre como escolher entre essas versões, clique aqui.

Instalação

Para instalação no Windows, consulte o guia de instalação das Ferramentas da AWS para PowerShell no Windows.

Para instalação em Linux ou Mac, consulte o guia de instalação das Ferramentas da AWS para PowerShell no Linux ou macOS.

Visão geral e atributos principais

O número de módulos e de comandos que podem ser executados pelas ferramentas da AWS para PowerShell é muito grande. Em relação ao AWS Lambda, você pode usar as ferramentas para listar, visualizar, implantar, gerenciar e invocar funções.

Para ver todos os comandos disponíveis, execute:

Get-Command -Module AWS.Tools.Lambda

Você pode encontrar a documentação completa de todos os comandos na referência de Cmdlet das ferramentas da AWS para PowerShell. Navegue até a seção Lambda na barra esquerda.

Para listar todas as funções do Lambda, execute:

Get-LMFunctionList

Para invocar uma função do Lambda, execute:

$Response=Invoke-LMFunction -FunctionName StringToUpperCase -Payload '"hello world"'

[System.IO.StreamReader]::new($Response.Payload).ReadToEnd() 

Funções AOT nativas do Docker para .NET 7

Em novembro de 2022, a Microsoft lançou o .NET 7. Embora não haja um runtime gerenciado do Lambda para essa versão do .NET, você pode usá-lo como runtime personalizado com compilação nativa antecipada (AOT).

 O principal benefício dessa abordagem é uma inicialização a frio significativamente mais rápida das funções do .NET 7. Em testes usando funções comparáveis executando o .NET 6 com um runtime gerenciado e o .NET 7 usando compilação AOT, a função .NET 7 inicia até 86% mais rápido.

Para ler mais sobre aplicações .NET sem servidor na AWS, consulte este post - Criação de aplicações .NET sem servidor no AWS Lambda usando o.NET 7.

Para usar a compilação com as funções do Lambda do .NET 7, você precisa instalar e executar o Docker.
Você pode baixar o Docker na Visão geral da instalação do Docker.

Comparação das ferramentas selecionadas

Verificação de conhecimento

Agora você concluiu o Módulo 2, Ferramentas para o desenvolvimento em .NET com o AWS Lambda. O teste a seguir verificará o que você aprendeu até agora.

1. Qual kit de ferramentas da AWS para um IDE tem mais atributos? (selecione um)

a. Visual Studio Code

b. Visual Studio

c. Rider

d. Todos eles têm os mesmos atributos

2. Quais sistemas operacionais oferecem suporte às extensões da AWS para a CLI do .NET?

a. Mac

b. Linux

c. Windows

d. Todas as opções acima

a. Homebrew

b. Pip

c. Chocolatey

d. Baixe diretamente da AWS

Respostas: 1-b, 2-d, 3-d

Conclusão

Neste módulo, você aprendeu sobre as ferramentas mais usadas e importantes para o desenvolvimento de funções do Lambda no .NET. Agora você sabe quais ferramentas estão disponíveis, como instalá-las, algumas noções básicas sobre como usá-las, além de ter links para saber mais.

Mas a melhor maneira de aprender é começar a experimentar. No próximo módulo, você aprenderá a usar o .NET com o serviço do Lambda.

Essa página foi útil?

.NET NO AWS LAMBDA