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.

  1. Aggiornamento di Visual Studio 2015 3
  2. AWS Toolkit per Visual Studio 2015 - versione 1.11.2.0
  3. 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

  1. Apri Visual Studio e Seleziona File -> Nuovo progetto
  2. Seleziona AWS Lambda Project con test (.NET Core) inserisci la descrizione dell'immagine qui
  3. Successivamente verrà visualizzata la schermata Seleziona progetto . Seleziona Funzione Vuota e fai clic sul pulsante Fine: inserisci la descrizione dell'immagine qui
  4. Vai su Strumenti -> NuGet Package Manager -> Console Gestione pacchetti.
  5. Nella finestra della console, digitare Install-Package Amazon.Lambda.Core
  6. 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.

inserisci la descrizione dell'immagine qui

Passaggio 2. Aggiungere e modificare il codice nel progetto

  1. 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;
  1. Aggiungi un file al progetto denominato SimpleSerializer.cs
  2. 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;
        }

    }
}
}
  1. Nel progetto di test, modificare la riga 23 del FunctionTest.cs al seguente:

            var upperCase = function.FunctionHandler(null);
    
  2. Costruisci la tua soluzione - non dovresti avere errori di compilazione.

Passaggio 3: installa la funzione Lambda in AWS

  1. Fare clic con il pulsante destro del mouse sul progetto e selezionare Pubblica su AWS Lambda ...

  2. 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. inserisci la descrizione dell'immagine qui

  3. Nella pagina successiva, selezionare AWSLambdaRole per il campo Nome ruolo. Fai clic su Carica e la funzione dovrebbe caricare senza errori. inserisci la descrizione dell'immagine qui

Passaggio 4. Richiamare la funzione AWS Lambda da Visual Studio

  1. Dopo il passaggio 3 sopra, Visual Studio aprirà la finestra View Function con la funzione caricata.
  2. In basso a sinistra di questa schermata, inserisci il seguente json nella casella Input campione :
{
"month": "10",
"day": "28",
"year": "1979"
}

inserisci la descrizione dell'immagine qui

  1. 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.


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow