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ł
Jako Architekt IT, nie tylko projektuję systemy informatyczne, ale również moje życie jest zaprojektowane w taki sposób, aby działać jak dobrze zaprojektowany system - jestem zawsze gotowy na wszelkie wyzwania i problemy. Podobnie jak każdy system, który projektuję, staram się być skalowalny i elastyczny, a czasem trudno przewidzieć, kiedy potrzebna będzie aktualizacja. Często słyszę pytanie: "Kiedy zostanie wydany update twojego życia?" A ja odpowiadam: "Kiedyś, ale zanim to nastąpi, muszę zebrać więcej danych i przeprowadzić odpowiednie testy." Moje życie to nie tylko kodowanie i projektowanie, ale również ciągłe doskonalenie i uczenie się nowych technologii. Nieustannie próbuję wprowadzać ulepszenia, zarówno w moim życiu osobistym, jak i zawodowym. A jeśli coś nie działa, nie boję się eksperymentować i próbować różnych rozwiązań, aby znaleźć najlepsze rozwiązanie. Nie jestem tylko architektem IT - jestem również architektem swojego życia, zaprojektowanym w taki sposób, aby działał jak dobrze zaprojektowany system.

Leave a Reply Text