aws-lambda
Jak opracować aws-lambda (C #) na lokalnej maszynie
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.
- Aktualizacja Visual Studio 2015 3
- AWS Toolkit dla Visual Studio 2015 - wersja 1.11.2.0
- 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
- Otwórz Visual Studio i wybierz Plik -> Nowy projekt
- Wybierz AWS Lambda Project with Tests (.NET Core)
- Następnie wyświetli się ekran Wybierz projekt. Wybierz Opróżnij funkcję i kliknij przycisk Zakończ:
- Przejdź do Narzędzia -> Menedżer pakietów NuGet -> Konsola Menedżera pakietów.
- W oknie konsoli wpisz Install-Package Amazon.Lambda.Core
- Kliknij prawym przyciskiem myszy projekt w eksploratorze rozwiązań i wybierz Przywróć pakiety. Jest to ostatni krok przygotowawczy przed rozpoczęciem pisania kodu.
Krok 2. Dodaj i zmień kod w swoim projekcie
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;
- Dodaj plik do projektu o nazwie
SimpleSerializer.cs
- 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;
}
}
}
}
W projekcie testowym zmień wiersz 23
FunctionTest.cs
na następujący:var upperCase = function.FunctionHandler(null);
Zbuduj swoje rozwiązanie - nie powinieneś mieć błędów kompilacji.
Krok 3 - Zainstaluj funkcję Lambda w AWS
Kliknij prawym przyciskiem myszy swój projekt i wybierz Opublikuj w AWS Lambda ...
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.
Na następnej stronie wybierz AWSLambdaRole w polu Nazwa roli. Kliknij przycisk Prześlij, a funkcja powinna zostać przesłana bez błędów.
Krok 4. Wywołaj funkcję AWS Lambda z poziomu Visual Studio
- Po kroku 3 powyżej Visual Studio otworzy okno
View Function
z załadowaną funkcją. - W lewym dolnym rogu tego ekranu wprowadź następujący plik Json w polu Sample Input :
{
"month": "10",
"day": "28",
"year": "1979"
}
- Ostatni krok: kliknij zielony przycisk Invoke . Funkcja będzie działać w AWS, a odpowiedź zostanie wyświetlona w prawym dolnym oknie odpowiedzi .