Funções Serverless em C#: AWS Lambda com .NET

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course
```html

Funções Serverless em C#: Guia Completo para AWS Lambda com .NET



A arquitetura Serverless está se tornando o padrão para aplicações modernas. AWS Lambda é um dos serviços mais populares para executar código sem gerenciar servidores. Neste artigo, vamos explorar como criar funções serverless em C# usando .NET 6/8, configurar o ambiente, escrever código eficiente e implantá-lo na nuvem.



O que é AWS Lambda e por que C#?



AWS Lambda é um serviço de computação que executa seu código em resposta a eventos e gerencia automaticamente os recursos computacionais. C# com .NET é uma excelente escolha para Lambda devido a:



  • Alta performance — .NET 6+ proporciona uma inicialização a frio rápida (cerca de 200-500 ms).
  • Sintaxe familiar — se você já programa em C#, a curva de aprendizado é mínima.
  • Ecossistema rico — todas as bibliotecas NuGet estão disponíveis.
  • Integração com AWS — o SDK para .NET permite trabalhar facilmente com S3, DynamoDB, SQS e outros serviços.


Funções serverless em C# são ideais para processamento de arquivos, REST APIs (via API Gateway), processos ETL e microsserviços.



Configuração do projeto para AWS Lambda em C#



Para começar, você precisará de:

  • .NET SDK 6.0 ou superior
  • Uma conta AWS
  • AWS CLI (recomendado)
  • Ferramenta dotnet lambda (instalada via dotnet tool install -g Amazon.Lambda.Tools)


Vamos criar um novo projeto:



dotnet new lambda.EmptyFunction --name MyFirstLambdacd MyFirstLambda


A estrutura do projeto inclui:

  • Function.cs — arquivo principal com a lógica.
  • aws-lambda-tools-defaults.json — configurações de deploy.
  • MyFirstLambda.csproj — arquivo do projeto com os pacotes necessários.


Certifique-se de que o .csproj tenha referências aos pacotes:



<PackageReference Include="Amazon.Lambda.Core" Version="2.2.0" /><PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.3.1" />


Escrevendo a primeira função serverless em C#



Vamos abrir o Function.cs e escrever um handler simples que recebe um nome e retorna uma saudação:



using Amazon.Lambda.Core;using Amazon.Lambda.Serialization.SystemTextJson;

[assembly: LambdaSerializer(typeof(DefaultLambdaJsonSerializer))]

public class Function{ public string FunctionHandler(Input input, ILambdaContext context) { context.Logger.LogInformation($"Processando requisição para: {input.Name}"); return $"Olá, {input.Name}! Hora: {DateTime.UtcNow}"; }}

public class Input{ public string Name { get; set; }}


Vamos analisar os pontos-chave:

  • LambdaSerializer — especifica como serializar/desserializar JSON. SystemTextJson é uma opção rápida e moderna.
  • ILambdaContext — fornece informações sobre a chamada atual: tempo restante, logger, ID da requisição.
  • Input — uma classe POCO simples para os dados de entrada.


Para testar localmente, use:



dotnet lambda invoke-function MyFirstLambda --payload "{\\"Name\\": \\"Mundo\\"}"


Trabalhando com serviços AWS a partir do Lambda



O verdadeiro poder das funções serverless em C# se revela na integração com outros serviços. Vejamos um exemplo de upload de arquivo para o S3:



using Amazon.S3;using Amazon.S3.Model;using Amazon.Lambda.Core;

public class S3Function{ private readonly IAmazonS3 _s3Client; public S3Function() { _s3Client = new AmazonS3Client(); // usa a IAM role do Lambda } ```

Blogs

Book Recommendations