Szukaj…


Wprowadzenie

W ramach ruchu bezserwerowego AWS niedawno ogłosiła obsługę C # dla funkcji AWS Lambda. W tym artykule pokażę, jak opracować, zainstalować i wywołać prostą funkcję lambda C # AWS za pomocą programu Visual Studio 2015.

Zanim zaczniesz ten przykład, najpierw przejdź do sekcji Uwagi w tym dokumencie i upewnij się, że masz zainstalowane wszystkie wymagane komponenty.

Uwagi

Zainstaluj wymagane komponenty

W momencie pisania tego tekstu (styczeń 2017 r.) Następujące elementy będą musiały zostać zainstalowane na komputerze w tej kolejności. Maszyna, z której korzystałem, miała zainstalowany system Windows 10 Home.

  1. Aktualizacja Visual Studio 2015 3
  2. AWS Toolkit dla Visual Studio 2015 - wersja 1.11.2.0
  3. Microsoft .NET Core Tools ( wersja zapoznawcza 2) - wersja 14.1.21111.0

Każdy z tych składników jest aktywnie opracowywany i wydawany, dlatego dokładnie sprawdź łącza i wersje i w razie potrzeby zaktualizuj ten dokument.

Instalacja każdego z nich może zająć trochę czasu , więc bądź cierpliwy, zrób to pojedynczo, aby zminimalizować błędy.

Wreszcie ponowne uruchomienie systemu Windows przed rozpoczęciem programowania jest smutne, ale zawsze jest dobrym pomysłem po wykonaniu dużych instalacji narzędzi programistycznych na komputerze z systemem Windows.

Krok 1. Utwórz nowe rozwiązanie w Visual Studio

  1. Otwórz Visual Studio i wybierz Plik -> Nowy projekt
  2. Wybierz AWS Lambda Project with Tests (.NET Core) wprowadź opis zdjęcia tutaj
  3. Następnie wyświetli się ekran Wybierz projekt. Wybierz Opróżnij funkcję i kliknij przycisk Zakończ: wprowadź opis zdjęcia tutaj
  4. Przejdź do Narzędzia -> Menedżer pakietów NuGet -> Konsola Menedżera pakietów.
  5. W oknie konsoli wpisz Install-Package Amazon.Lambda.Core
  6. Kliknij prawym przyciskiem myszy projekt w eksploratorze rozwiązań i wybierz Przywróć pakiety. Jest to ostatni krok przygotowawczy przed rozpoczęciem pisania kodu.

wprowadź opis zdjęcia tutaj

Krok 2. Dodaj i zmień kod w swoim projekcie

  1. Otwórz Function.cs i zastąp kod klasy następującym kodem:

    public class Function
    {
    
    /// <summary>
    /// A simple function that takes a birth date and returns Age in years
    /// </summary>
    /// <param name="input"></param>
    /// <returns>Age is years</returns>
    /// 
    [LambdaSerializer(typeof(SimpleSerializer))]
    public string FunctionHandler(Dictionary<string, int> input)
    {
        var defaultMessage = "Age could not be determined.";
    
        var birthDate = new DateTime(input["year"], input["month"], input["day"]);
        var ageInYears = DateTime.Today.Year - birthDate.Year;
        if (birthDate.DayOfYear > DateTime.Today.DayOfYear)
            ageInYears--;
    
        defaultMessage = $"Age in years: {ageInYears}";
    
        return defaultMessage;
    }
    }
    

Musisz dodać następujące przy użyciu instrukcji u góry:

using System.Collections.Generic;
using Amazon.Lambda.Core;
  1. Dodaj plik do projektu o nazwie SimpleSerializer.cs
  2. Umieść następujący kod w tym pliku:
using System;

using System.IO;
using Amazon.Lambda.Core;
using Newtonsoft.Json;

namespace AWSLambdaFunctionAgeInYears
{
public class SimpleSerializer : ILambdaSerializer
{
    public T Deserialize<T>(Stream requestStream)
    {
        string text;
        using (var reader = new StreamReader(requestStream))
            text = reader.ReadToEnd();

        try
        {
            return JsonConvert.DeserializeObject<T>(text);
        }
        catch (Exception ex)
        {
            if (typeof(T) == typeof(System.String))
                return (T)Convert.ChangeType(text, typeof(T));

            throw ex;
        }

    }

    public void Serialize<T>(T response, Stream responseStream)
    {
        StreamWriter streamWriter = new StreamWriter(responseStream);
        try
        {
            string text = JsonConvert.SerializeObject(response);
            streamWriter.Write(text);
            streamWriter.Flush();
        }
        catch (Exception ex)
        {
            if (typeof(T) == typeof(System.String))
            {
                streamWriter.Write(response);
                streamWriter.Flush();
                return;
            }

            throw ex;
        }

    }
}
}
  1. W projekcie testowym zmień wiersz 23 FunctionTest.cs na następujący:

            var upperCase = function.FunctionHandler(null);
    
  2. Zbuduj swoje rozwiązanie - nie powinieneś mieć błędów kompilacji.

Krok 3 - Zainstaluj funkcję Lambda w AWS

  1. Kliknij prawym przyciskiem myszy swój projekt i wybierz Opublikuj w AWS Lambda ...

  2. Zostanie wyświetlony ekran Prześlij do AWS Lambda. Upewnij się, że wybrano właściwy region. Zachowaj wszystkie wartości domyślne. Następnie wprowadź tylko nazwę funkcji: AWSLambdaFunctionAgeInYears, a następnie kliknij przycisk Dalej. wprowadź opis zdjęcia tutaj

  3. Na następnej stronie wybierz AWSLambdaRole w polu Nazwa roli. Kliknij przycisk Prześlij, a funkcja powinna zostać przesłana bez błędów. wprowadź opis zdjęcia tutaj

Krok 4. Wywołaj funkcję AWS Lambda z poziomu Visual Studio

  1. Po kroku 3 powyżej Visual Studio otworzy okno View Function z załadowaną funkcją.
  2. W lewym dolnym rogu tego ekranu wprowadź następujący plik Json w polu Sample Input :
{
"month": "10",
"day": "28",
"year": "1979"
}

wprowadź opis zdjęcia tutaj

  1. Ostatni krok: kliknij zielony przycisk Invoke . Funkcja będzie działać w AWS, a odpowiedź zostanie wyświetlona w prawym dolnym oknie odpowiedzi .


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow