aws-lambda
Comment développer aws-lambda (C #) sur une machine locale
Recherche…
Introduction
Dans le cadre du mouvement sans serveur , AWS a récemment annoncé la prise en charge de C # pour les fonctions AWS Lambda. Dans cet article, je vais vous montrer comment développer, installer et appeler une simple fonction C # AWS Lambda à l'aide de Visual Studio 2015.
Avant de commencer cet exemple, accédez d'abord à la section Notes de ce document et assurez-vous que tous les composants requis sont installés.
Remarques
Installer les composants requis
Au moment d'écrire ces lignes (janvier 2017), les composants suivants devront être installés sur votre machine dans cet ordre. Windows 10 Home est installé sur la machine que j'ai utilisée.
- Visual Studio 2015 update 3
- AWS Toolkit for Visual Studio 2015 - version 1.11.2.0
- Outils Microsoft .NET Core (aperçu 2) - version 14.1.21111.0
Chacun de ces composants est activement développé et publié. Vérifiez donc les liens et les versions et mettez à jour ce document si nécessaire.
L' installation de chacun d'eux peut prendre un certain temps , alors soyez patient, faites-en un à la fois pour minimiser les erreurs.
Enfin, il est triste de redémarrer Windows avant de commencer le développement, mais cela reste toujours une bonne idée après avoir réalisé d'importantes installations d'outils de développement sur une boîte Windows.
Étape 1. Créez une nouvelle solution dans Visual Studio
- Ouvrez Visual Studio et sélectionnez Fichier -> Nouveau projet
- Sélectionnez Projet AWS Lambda avec des tests (.NET Core)
- Ensuite, l’écran Select Blueprint s’affichera. Sélectionnez Fonction vide et cliquez sur le bouton Terminer:
- Accédez à Outils -> Gestionnaire de packages NuGet -> Console du gestionnaire de packages.
- Dans la fenêtre de la console, tapez Install-Package Amazon.Lambda.Core
- Cliquez avec le bouton droit sur votre projet dans l'explorateur de solutions et sélectionnez Restaurer les packages. Ceci est la dernière étape de préparation avant de commencer à écrire du code.
Étape 2. Ajouter et modifier le code dans votre projet
Ouvrez
Function.cs
et remplacez le code de la classe par le suivant: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; } }
Vous devrez ajouter les éléments suivants en utilisant des instructions proches du haut:
using System.Collections.Generic;
using Amazon.Lambda.Core;
- Ajouter un fichier au projet nommé
SimpleSerializer.cs
- Placez le code suivant dans ce fichier:
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;
}
}
}
}
Dans le projet de test, remplacez la ligne 23 du
FunctionTest.cs
par la suivante:var upperCase = function.FunctionHandler(null);
Construisez votre solution - vous ne devriez pas avoir d'erreurs de génération.
Étape 3 - Installez votre fonction Lambda dans AWS
Cliquez avec le bouton droit sur votre projet et sélectionnez Publier sur AWS Lambda ...
L'écran Télécharger sur AWS Lambda apparaîtra. Assurez-vous que la bonne région est sélectionnée. Conservez toutes les valeurs par défaut. Ensuite, entrez uniquement le nom de la fonction: AWSLambdaFunctionAgeInYears, puis cliquez sur suivant.
Sur la page suivante, sélectionnez AWSLambdaRole pour le champ Nom du rôle. Cliquez sur Télécharger et la fonction doit être téléchargée sans erreur.
Étape 4. Appelez votre fonction AWS Lambda depuis Visual Studio
- Après l'étape 3 ci-dessus, Visual Studio ouvrira la fenêtre
View Function
avec votre fonction chargée. - En bas à gauche de cet écran, entrez le json suivant dans la zone Sample Input :
{
"month": "10",
"day": "28",
"year": "1979"
}
- Dernière étape: Cliquez sur le bouton vert Invoke . La fonction s'exécutera sur AWS et la réponse sera affichée dans la fenêtre Réponse en bas à droite.