aws-lambda
Come sviluppare aws-lambda (C #) su una macchina locale
Ricerca…
introduzione
Come parte del movimento Serverless , AWS ha recentemente annunciato il supporto C # per le funzioni di AWS Lambda. In questo articolo, ti mostrerò come sviluppare, installare e chiamare una semplice funzione Lambda C # AWS utilizzando Visual Studio 2015.
Prima di iniziare questo esempio, prima vai alla sezione Note di questo documento e assicurati di aver installato tutti i componenti richiesti.
Osservazioni
Installa i componenti richiesti
Al momento della stesura di questo documento (gennaio 2017), i seguenti componenti dovranno essere installati sulla macchina in questo ordine. La macchina che ho usato aveva Windows 10 Home installato.
- Aggiornamento di Visual Studio 2015 3
- AWS Toolkit per Visual Studio 2015 - versione 1.11.2.0
- Microsoft .NET Core Tools (Anteprima 2) - versione 14.1.21111.0
Ognuno di questi componenti viene attivamente sviluppato e rilasciato, quindi ricontrolla i link e le versioni e aggiorna questo documento quando necessario.
Ognuno di questi può richiedere del tempo per l'installazione , quindi sii paziente, fallo uno alla volta per minimizzare gli errori.
Infine, riavviare Windows prima di avviare lo sviluppo è triste, ma è sempre una buona idea dopo aver eseguito importanti installazioni di strumenti di sviluppo su una casella di Windows.
Passaggio 1. Creare una nuova soluzione in Visual Studio
- Apri Visual Studio e Seleziona File -> Nuovo progetto
- Seleziona AWS Lambda Project con test (.NET Core)
- Successivamente verrà visualizzata la schermata Seleziona progetto . Seleziona Funzione Vuota e fai clic sul pulsante Fine:
- Vai su Strumenti -> NuGet Package Manager -> Console Gestione pacchetti.
- Nella finestra della console, digitare Install-Package Amazon.Lambda.Core
- Fare clic con il tasto destro del mouse sul progetto in Esplora soluzioni e selezionare Ripristina pacchetti. Questa è la fase finale di preparazione prima di iniziare a scrivere il codice.
Passaggio 2. Aggiungere e modificare il codice nel progetto
Aprire
Function.cs
e sostituire il codice di classe con quanto segue: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; } }
Dovrai aggiungere le seguenti istruzioni usando la parte superiore:
using System.Collections.Generic;
using Amazon.Lambda.Core;
- Aggiungi un file al progetto denominato
SimpleSerializer.cs
- Inserire il seguente codice in quel file:
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;
}
}
}
}
Nel progetto di test, modificare la riga 23 del
FunctionTest.cs
al seguente:var upperCase = function.FunctionHandler(null);
Costruisci la tua soluzione - non dovresti avere errori di compilazione.
Passaggio 3: installa la funzione Lambda in AWS
Fare clic con il pulsante destro del mouse sul progetto e selezionare Pubblica su AWS Lambda ...
Apparirà la schermata Carica su AWS Lambda. Assicurarsi che sia selezionata la regione corretta. Mantieni tutti i valori predefiniti. Quindi inserire solo il Nome funzione: AWSLambdaFunctionAgeInYears e quindi fare clic su Avanti.
Nella pagina successiva, selezionare AWSLambdaRole per il campo Nome ruolo. Fai clic su Carica e la funzione dovrebbe caricare senza errori.
Passaggio 4. Richiamare la funzione AWS Lambda da Visual Studio
- Dopo il passaggio 3 sopra, Visual Studio aprirà la finestra
View Function
con la funzione caricata. - In basso a sinistra di questa schermata, inserisci il seguente json nella casella Input campione :
{
"month": "10",
"day": "28",
"year": "1979"
}
- Ultimo passaggio: fai clic sul pulsante Richiama verde. La funzione verrà eseguita su AWS e la risposta verrà visualizzata nella finestra di risposta in basso a destra.