aws-lambda
Hoe aws-lambda (C #) op een lokale machine te ontwikkelen
Zoeken…
Invoering
Als onderdeel van de Serverless- beweging heeft AWS onlangs C # -ondersteuning voor AWS Lambda-functies aangekondigd. In dit artikel zal ik je laten zien hoe je een eenvoudige C # AWS Lambda-functie kunt ontwikkelen, installeren en aanroepen met Visual Studio 2015.
Voordat u met dit voorbeeld begint, gaat u eerst naar de sectie Opmerkingen van dit document en controleert u of alle vereiste componenten zijn geïnstalleerd.
Opmerkingen
Vereiste componenten installeren
Op het moment van schrijven (januari 2017) moeten de volgende componenten in deze volgorde op uw machine worden geïnstalleerd. Op de machine die ik gebruikte, was Windows 10 Home geïnstalleerd.
- Update 3 voor Visual Studio 2015
- AWS Toolkit voor Visual Studio 2015 - versie 1.11.2.0
- Microsoft .NET Core Tools (Preview 2) - versie 14.1.21111.0
Elk van deze componenten is actief ontwikkeld en vrijgegeven, dus controleer de koppelingen en versies dubbel en update dit document indien nodig.
Elk van deze kan enige tijd duren om te installeren , dus wees geduldig, doe een voor een om fouten te minimaliseren.
Ten slotte is het triest om Windows opnieuw op te starten voordat de ontwikkeling wordt gestart, maar altijd een goed idee na het uitvoeren van belangrijke installaties van ontwikkeltools op een Windows-box.
Stap 1. Maak een nieuwe oplossing in Visual Studio
- Open Visual Studio en selecteer Bestand -> Nieuw project
- Selecteer AWS Lambda-project met tests (.NET Core)
- Vervolgens wordt het scherm Selecteer blauwdruk weergegeven. Selecteer de functie Leeg en klik op de knop Voltooien:
- Ga naar Extra -> NuGet Pakketbeheer -> Pakketbeheerconsole.
- Typ in het consolevenster Install-Package Amazon.Lambda.Core
- Klik met de rechtermuisknop op uw project in de oplossingsverkenner en selecteer Pakketten herstellen. Dit is de laatste voorbereidingsstap voordat u begint met het schrijven van code.
Stap 2. Code toevoegen en wijzigen in uw project
Open
Function.cs
en vervang de klassecode door het volgende: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; } }
U moet het volgende toevoegen met behulp van verklaringen bovenaan:
using System.Collections.Generic;
using Amazon.Lambda.Core;
- Voeg een bestand toe aan het project
SimpleSerializer.cs
- Plaats de volgende code in dat bestand:
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;
}
}
}
}
Wijzig in het testproject regel 23 van de
FunctionTest.cs
als volgt:var upperCase = function.FunctionHandler(null);
Bouw uw oplossing - u zou geen buildfouten moeten hebben.
Stap 3 - Installeer uw Lambda-functie in AWS
Klik met de rechtermuisknop op uw project en selecteer Publiceren naar AWS Lambda ...
Het scherm Uploaden naar AWS Lambda verschijnt. Zorg ervoor dat de juiste regio is geselecteerd. Bewaar alle standaardwaarden. Voer vervolgens alleen de functienaam in: AWSLambdaFunctionAgeInYears en klik vervolgens op volgende.
Selecteer op de volgende pagina AWSLambdaRole voor het veld Rolnaam. Klik op Uploaden en de functie zou zonder fouten moeten uploaden.
Stap 4. Roep uw AWS Lambda-functie op vanuit Visual Studio
- Na stap 3 hierboven opent Visual Studio het venster
View Function
met uw functie geladen. - Voer linksonder in dit scherm de volgende json in het vak Sample Input in:
{
"month": "10",
"day": "28",
"year": "1979"
}
- Laatste stap: klik op de groene knop Invoke . De functie zal draaien op AWS en de reactie wordt weergegeven in de rechterbenedenhoek Response-venster.