fbpx

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"

Video

Szafrański Michał
Uczę programistów efektywnego wykorzystania chmury AWS do ich pracy twórczej.