fbpx

Jak ustawić środowisko Serverless AWS

Jeśli to twój pierwszy kontakt z serverless to zapewniam cię, że będzie bezkonfliktowy. Na warsztatach ustawimy sobie lokalne środowisko developerskie, napiszemy niewielki program i wdrożymy do usługi AWS Lambda.

Warsztaty live w ramach AWSowego tygodnia ➡️ https://www.akademiaarchitektait.pl/plan-wydarzen-awsowego-tygodnia/


Przygotowanie środowiska

  1. Zainstalowany VS Code https://code.visualstudio.com
  2. Zainstalowany AWS SAM CLI. https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html
    Możecie to sprawdzić wydając komendę:
    sam --version
  3. Instalacja Dockera https://docs.docker.com/get-docker/
    Sprawdzamy komendą:
    docker -v
  4. Instalacja .Net Core 3.1 https://dotnet.microsoft.com/download
    Sprawdzamy wersję:
    dotnet --version
  5. Zainstalowany Extensions „AWS Toolkit” w VS Code. Po jego instalacji sprawdź możliwość połączenia się do AWSa.
  6. Zainstalowany Extension C# w VS Code.

Polecenia użyte podczas warsztatu

Zbudowanie programu

sam build

Lokalne wywołanie funkcji

sam local invoke

Zmiana kodu na coś ciekawszego

namespace HelloWorld
{
    public class Joke
    {
        public IList<string> Categories { get; set; }
        public string Created_at { get; set; }
        public string Icon_url { get; set; }
        public string Id { get; set; }
        public string Updated_at { get; set; }
        public string Url { get; set; }
        public string Value { get; set; }
    }
    public class Function
    {

        private static readonly HttpClient client = new HttpClient();

        private static async Task<string> GetJoke()
        {
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Add("User-Agent", "AWS Lambda .Net Client");

            var msg = await client.GetStringAsync("https://api.chucknorris.io/jokes/random").ConfigureAwait(continueOnCapturedContext: false);
            var joke = JsonConvert.DeserializeObject<Joke>(msg);

            return joke.Value;
        }

        public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest apigProxyEvent, ILambdaContext context)
        {
            var joke = await GetJoke();
            var body = new Dictionary<string, string>
            {
                { "joke", joke }
            };

            return new APIGatewayProxyResponse
            {
                Body = JsonConvert.SerializeObject(body),
                StatusCode = 200,
                Headers = new Dictionary<string, string> { { "Content-Type", "application/json" } }
            };
        }
    }
}

Uruchomienie serwera api

sam local invoke HelloWorldFunction --event events/event.json

sam local start-api

curl http://localhost:3000/hello

Wdrożenie

sam deploy --guided

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