Implantar funções do Lambda em C# usando o AWS CDK - AWS Lambda

Implantar funções do Lambda em C# usando o AWS CDK

O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software de código aberto para definição da infraestrutura em nuvem como código com linguagens de programação e estruturas modernas, como o .NET. Os projetos do AWS CDK são executados para gerar modelos do AWS CloudFormation que são usados para implantar o código.

Para criar e implantar um exemplo de aplicação Hello world do .NET usando o AWS CDK, siga as instruções nas seções a seguir. A aplicação de amostra implementa um back-end de API básica que consiste em um endpoint do API Gateway e uma função do Lambda. O API Gateway invoca a função do Lambda quando você envia uma solicitação HTTP GET ao endpoint. A função retorna uma mensagem Hello world, juntamente com o endereço IP da instância do Lambda que processa a sua solicitação.

Pré-requisitos

SDK do .NET 8

Instale o SDK e o runtime do .NET 8.

AWS CDK versão 2

Para saber como instalar a versão mais recente do AWS CDK, consulte Conceitos básicos do AWS CDK no Guia do desenvolvedor do AWS Cloud Development Kit (AWS CDK) v2.

Implantar uma aplicação de exemplo do AWS CDK

  1. Crie um diretório de projeto para a aplicação de amostra e navegue até ele.

    mkdir hello-world cd hello-world
  2. Inicialize uma nova aplicação do AWS CDK executando o comando a seguir.

    cdk init app --language csharp

    O comando cria os seguintes arquivos e diretórios no diretório do projeto.

    ├── README.md ├── cdk.json └── src ├── HelloWorld │   ├── GlobalSuppressions.cs │   ├── HelloWorld.csproj │   ├── HelloWorldStack.cs │   └── Program.cs └── HelloWorld.sln
  3. Abra o diretório src e crie uma nova função do Lambda usando a CLI do .NET. Essa é a função que você implantará usando o AWS CDK. Neste exemplo, você cria uma função Hello world denominada HelloWorldLambda usando o modelo lambda.EmptyFunction.

    cd src dotnet new lambda.EmptyFunction -n HelloWorldLambda

    Após esta etapa, a estrutura de diretórios dentro do projeto deve ser semelhante à apresentada a seguir.

    ├── README.md ├── cdk.json └── src ├── HelloWorld │   ├── GlobalSuppressions.cs │   ├── HelloWorld.csproj │   ├── HelloWorldStack.cs │   └── Program.cs ├── HelloWorld.sln └── HelloWorldLambda ├── src │   └── HelloWorldLambda │   ├── Function.cs │   ├── HelloWorldLambda.csproj │   ├── Readme.md │   └── aws-lambda-tools-defaults.json └── test └── HelloWorldLambda.Tests ├── FunctionTest.cs └── HelloWorldLambda.Tests.csproj
  4. Abra o arquivo HelloWorldStack.cs do diretório src/HelloWorld. Substitua o conteúdo do arquivo pelo código a seguir.

    using Amazon.CDK; using Amazon.CDK.AWS.Lambda; using Amazon.CDK.AWS.Logs; using Constructs; namespace CdkTest { public class HelloWorldStack : Stack { internal HelloWorldStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { var buildOption = new BundlingOptions() { Image = Runtime.DOTNET_8.BundlingImage, User = "root", OutputType = BundlingOutput.ARCHIVED, Command = new string[]{ "/bin/sh", "-c", " dotnet tool install -g Amazon.Lambda.Tools"+ " && dotnet build"+ " && dotnet lambda package --output-package /asset-output/function.zip" } }; var helloWorldLambdaFunction = new Function(this, "HelloWorldFunction", new FunctionProps { Runtime = Runtime.DOTNET_8, MemorySize = 1024, LogRetention = RetentionDays.ONE_DAY, Handler = "HelloWorldLambda::HelloWorldLambda.Function::FunctionHandler", Code = Code.FromAsset("./src/HelloWorldLambda/src/HelloWorldLambda", new Amazon.CDK.AWS.S3.Assets.AssetOptions { Bundling = buildOption }), }); } } }

    Esse é o código para compilar e empacotar o código da aplicação, bem como a definição da própria função do Lambda. O objeto BundlingOptions permite que um arquivo zip seja criado, juntamente com um conjunto de comandos usados para gerar o conteúdo do arquivo zip. Nessa instância, o comando dotnet lambda package é usado para compilar e gerar o arquivo zip.

  5. Para implantar a aplicação, execute o comando a seguir.

    cdk deploy
  6. Invoque sua função do Lambda implantada usando a CLI do .NET Lambda.

    dotnet lambda invoke-function HelloWorldFunction -p "hello world"
  7. Depois de finalizados os testes, você poderá excluir os recursos criados, a menos que deseje mantê-los. Execute o comando a seguir para excluir os seus recursos.

    cdk destroy

Próximas etapas

Para saber mais sobre o uso do AWS CDK para criar e implantar funções do Lambda usando o .NET, consulte os seguintes recursos: