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
-
Crie um diretório de projeto para a aplicação de amostra e navegue até ele.
mkdir hello-world cd hello-world
-
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
-
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 denominadaHelloWorldLambda
usando o modelolambda.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
-
Abra o arquivo
HelloWorldStack.cs
do diretóriosrc/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 comandodotnet lambda package
é usado para compilar e gerar o arquivo zip. -
Para implantar a aplicação, execute o comando a seguir.
cdk deploy
-
Invoque sua função do Lambda implantada usando a CLI do .NET Lambda.
dotnet lambda invoke-function HelloWorldFunction -p "hello world"
-
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: