aws-lambda
Hur man utvecklar aws-lambda (C #) på en lokal maskin
Sök…
Introduktion
Som en del av Serverless- rörelsen meddelade AWS nyligen C # -stöd för AWS Lambda-funktioner. I den här artikeln kommer jag att visa dig hur du kan utveckla, installera och ringa en enkel C # AWS Lambda-funktion med Visual Studio 2015.
Innan du börjar exemplet, gå först till avsnittet Kommentarer i detta dokument och se till att alla nödvändiga komponenter är installerade.
Anmärkningar
Installera obligatoriska komponenter
Vid skrivandet (januari 2017) måste följande komponenter installeras på din maskin i denna ordning. Maskinen jag använde hade Windows 10 Home installerat.
- Visual Studio 2015 uppdatering 3
- AWS Toolkit för Visual Studio 2015 - version 1.11.2.0
- Microsoft .NET Core Tools (Förhandsvisning 2) - version 14.1.21111.0
Var och en av dessa komponenter utvecklas och släpps aktivt, så dubbelkontrollera länkarna och versionerna och uppdatera detta dokument vid behov.
Var och en av dessa kan ta lite tid att installera , så var tålamod, gör en i taget för att minimera misstag.
Slutligen är det tråkigt att starta om Windows innan utvecklingen startar, men alltid en bra idé efter att ha gjort stora utvecklingsverktygsinstallationer på en Windows-låda.
Steg 1. Skapa en ny lösning i Visual Studio
- Öppna Visual Studio och välj File -> New Project
- Välj AWS Lambda-projekt med tester (. NET Core)
- Därefter visas skärmen Select Blueprint . Välj Tom funktion och klicka på Finish-knappen:
- Gå till Verktyg -> NuGet Package Manager -> Package Manager Console.
- Skriv konsol-fönstret Amazon.Lambda.Core i konsolfönstret
- Högerklicka på ditt projekt i lösningsutforskaren och välj Återställ paket. Detta är det sista förberedelsesteget innan du börjar skriva kod.
Steg 2. Lägg till och ändra kod i ditt projekt
Öppna
Function.cs
och ersätt klasskoden med följande: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; } }
Du måste lägga till följande med uttalanden nära toppen:
using System.Collections.Generic;
using Amazon.Lambda.Core;
- Lägg till en fil till projektet
SimpleSerializer.cs
- Placera följande kod i den filen:
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;
}
}
}
}
I testprojektet ändrar du rad 23 i
FunctionTest.cs
till följande:var upperCase = function.FunctionHandler(null);
Bygg din lösning - du bör inte ha några byggfel.
Steg 3 - Installera din Lambda-funktion i AWS
Högerklicka på ditt projekt och välj Publicera till AWS Lambda ...
Skärmen Upload to AWS Lambda visas. Se till att rätt region är vald. Behåll alla standardvärden. Ange sedan bara Funktionsnamn: AWSLambdaFunctionAgeIn Years och klicka sedan på Nästa.
På nästa sida väljer du AWSLambdaRole för fältet Role Name. Klicka på Upload och funktionen ska laddas upp utan fel.
Steg 4. Åkalla din AWS Lambda-funktion från Visual Studio
- Efter steg 3 ovan öppnar Visual Studio fönstret
View Function
med din funktion laddad. - Längst ner till vänster på den här skärmen anger du följande json i rutan för provinmatning :
{
"month": "10",
"day": "28",
"year": "1979"
}
- Sista steg: Klicka på den gröna anropsknappen . Funktionen kommer att köras på AWS och svaret kommer att visas i den nedre högra Response fönster.