AWS Lambda w C# .Net
Czyli jak zacząć serverless na przykładzie prostej funkcji.
Jakiś czas temu w newsletterze wysłałem informacje o nowości jaką było wprowadzenie obsługi .Net Core 3.1 w AWS Lambda. Poprosiliście mnie o pokazanie jak można zacząć programować w najnowszej wersji C# 8 w funkcjach Amazona.
Zamieszczam krótkie video, w którym zakładam nowy projekt Function, publikuję go do Amazon Web Services i wystawiam publiczne API do tej funkcji. Na koniec przetestowałem działanie kodu za pomocą Postmana.
Poniżej zamieszczam wszystkie polecenia i kod użyty w video.
Serwisy AWS
https://console.aws.amazon.com/lambda/home
https://console.aws.amazon.com/apigateway/
Instalacja .NET Core Global Tools for AWS
dotnet tool install -g Amazon.Lambda.Tools
Update .NET Core Global Tools for AWS
dotnet tool update -g Amazon.Lambda.Tools
Instalacja szablonów projektów funkcji Lambda
dotnet new -i "Amazon.Lambda.Templates::*" dotnet new lambda --list dotnet new lambda.EmptyFunction -l
Sprawdzenie opcje szablonów
dotnet new lambda.S3 --help dotnet new lambda.EmptyFunction --help
Utworzenie projektu
dotnet new lambda.EmptyFunction –name RockPaperScissorsGame –profile default –region us-east-1
Kod gry
public static string RockPaperScissors(string first, string second) => (first, second) switch { ("kamień", "papier") => "Papier zakrywa kamień. Papier wygrywa.", ("kamień", "nożyce") => "Nożyce łamią się na kamieniu. Kamień wygrywa.", ("papier", "kamień") => "Papier zakrywa kamień. Papier wygrywa.", ("papier", "nożyce") => "Nożyce tną papier. Wygrywają nożyce.", ("nożyce", "kamień") => "Nożyce łamią się na kamieniu. Kamień wygrywa.", ("nożyce", "papier") => "Nożyce tną papier. Nożyce wygrywają.", (_, _) => "remis" }; public string FunctionHandler(string input, ILambdaContext context) { var inputArr = input?.Split(' '); return RockPaperScissors(inputArr[0], inputArr[1]); }
Publikacja funkcji
dotnet lambda deploy-function RockPaperScissorsGame --region us-east-1
Wywołanie testowe funkcji
dotnet lambda invoke-function RockPaperScissorsGame --region us-east-1 --payload "nożyce papier"