aws-lambda
Как разработать aws-lambda (C #) на локальной машине
Поиск…
Вступление
В рамках безсерверного движения AWS недавно объявила о поддержке C # для функций AWS Lambda. В этой статье я покажу вам, как разрабатывать, устанавливать и вызывать простую функцию C # AWS Lambda с помощью Visual Studio 2015.
Прежде чем начать этот пример, сначала перейдите в раздел «Примечания» этого документа и убедитесь, что у вас установлены все необходимые компоненты.
замечания
Установка необходимых компонентов
На момент написания этой статьи (январь 2017 г.) в этом порядке должны быть установлены следующие компоненты на вашем компьютере. У меня был установлен Windows 10 Home.
- Обновление Visual Studio 2015 3
- AWS Toolkit для Visual Studio 2015 - версия 1.11.2.0
- Инструменты Microsoft .NET Core (предварительный просмотр 2) - версия 14.1.21111.0
Каждый из этих компонентов активно разрабатывается и выпускается, поэтому дважды проверяйте ссылки и версии и обновляйте этот документ по мере необходимости.
Каждый из них может занять некоторое время, чтобы установить , так что будьте терпеливы, делайте по одному, чтобы свести к минимуму ошибки.
Наконец, перезагрузка Windows перед запуском разработки печальна, но всегда хорошая идея после выполнения основных инструментов инструментария разработки в окне Windows.
Шаг 1. Создайте новое решение в Visual Studio
- Откройте Visual Studio и выберите «Файл» -> «Новый проект»
- Выберите проект AWS Lambda с тестами (.NET Core)
- Затем отобразится экран Select Blueprint . Выберите « Пустое действие» и нажмите кнопку «Готово»:
- Откройте Инструменты -> Диспетчер пакетов NuGet -> Консоль диспетчера пакетов.
- В окне консоли введите Install-Package Amazon.Lambda.Core
- Щелкните правой кнопкой мыши свой проект в проводнике решений и выберите «Восстановить пакеты». Это заключительный этап подготовки, прежде чем вы начнете писать код.
Шаг 2. Добавление и изменение кода в вашем проекте
Откройте
Function.cs
и замените код класса следующим: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; } }
Вам нужно добавить следующие операторы:
using System.Collections.Generic;
using Amazon.Lambda.Core;
- Добавьте файл в проект с именем
SimpleSerializer.cs
- Вставьте следующий код в этот файл:
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;
}
}
}
}
В тестовом проекте измените строку 23
FunctionTest.cs
на следующее:var upperCase = function.FunctionHandler(null);
Создайте свое решение - у вас не должно быть ошибок сборки.
Шаг 3 - Установите Лямбда-функцию в AWS
Щелкните правой кнопкой мыши свой проект и выберите « Опубликовать в AWS Lambda ...
Появится экран Upload to AWS Lambda. Убедитесь, что выбран правильный регион. Сохраняйте все значения по умолчанию. Затем введите только имя функции: AWSLambdaFunctionAgeInYears, а затем нажмите кнопку «Далее».
На следующей странице выберите AWSLambdaRole для поля Название роли. Нажмите «Загрузить», и функция должна загрузиться без ошибок.
Шаг 4. Вызовите функцию AWS Lambda из Visual Studio
- После того, как шаг 3 выше, Visual Studio откроет окно
View Function
с загруженной функцией. - В левом нижнем углу этого экрана введите следующий json в поле Sample Input :
{
"month": "10",
"day": "28",
"year": "1979"
}
- Последний шаг: Нажмите на зеленую кнопку Invoke. Функция будет работать на AWS, и ответ будет отображаться в нижнем правом окне отклика .