Поиск…


Вступление

В рамках безсерверного движения AWS недавно объявила о поддержке C # для функций AWS Lambda. В этой статье я покажу вам, как разрабатывать, устанавливать и вызывать простую функцию C # AWS Lambda с помощью Visual Studio 2015.

Прежде чем начать этот пример, сначала перейдите в раздел «Примечания» этого документа и убедитесь, что у вас установлены все необходимые компоненты.

замечания

Установка необходимых компонентов

На момент написания этой статьи (январь 2017 г.) в этом порядке должны быть установлены следующие компоненты на вашем компьютере. У меня был установлен Windows 10 Home.

  1. Обновление Visual Studio 2015 3
  2. AWS Toolkit для Visual Studio 2015 - версия 1.11.2.0
  3. Инструменты Microsoft .NET Core (предварительный просмотр 2) - версия 14.1.21111.0

Каждый из этих компонентов активно разрабатывается и выпускается, поэтому дважды проверяйте ссылки и версии и обновляйте этот документ по мере необходимости.

Каждый из них может занять некоторое время, чтобы установить , так что будьте терпеливы, делайте по одному, чтобы свести к минимуму ошибки.

Наконец, перезагрузка Windows перед запуском разработки печальна, но всегда хорошая идея после выполнения основных инструментов инструментария разработки в окне Windows.

Шаг 1. Создайте новое решение в Visual Studio

  1. Откройте Visual Studio и выберите «Файл» -> «Новый проект»
  2. Выберите проект AWS Lambda с тестами (.NET Core) введите описание изображения здесь
  3. Затем отобразится экран Select Blueprint . Выберите « Пустое действие» и нажмите кнопку «Готово»: введите описание изображения здесь
  4. Откройте Инструменты -> Диспетчер пакетов NuGet -> Консоль диспетчера пакетов.
  5. В окне консоли введите Install-Package Amazon.Lambda.Core
  6. Щелкните правой кнопкой мыши свой проект в проводнике решений и выберите «Восстановить пакеты». Это заключительный этап подготовки, прежде чем вы начнете писать код.

введите описание изображения здесь

Шаг 2. Добавление и изменение кода в вашем проекте

  1. Откройте 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;
  1. Добавьте файл в проект с именем SimpleSerializer.cs
  2. Вставьте следующий код в этот файл:
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. В тестовом проекте измените строку 23 FunctionTest.cs на следующее:

            var upperCase = function.FunctionHandler(null);
    
  2. Создайте свое решение - у вас не должно быть ошибок сборки.

Шаг 3 - Установите Лямбда-функцию в AWS

  1. Щелкните правой кнопкой мыши свой проект и выберите « Опубликовать в AWS Lambda ...

  2. Появится экран Upload to AWS Lambda. Убедитесь, что выбран правильный регион. Сохраняйте все значения по умолчанию. Затем введите только имя функции: AWSLambdaFunctionAgeInYears, а затем нажмите кнопку «Далее». введите описание изображения здесь

  3. На следующей странице выберите AWSLambdaRole для поля Название роли. Нажмите «Загрузить», и функция должна загрузиться без ошибок. введите описание изображения здесь

Шаг 4. Вызовите функцию AWS Lambda из Visual Studio

  1. После того, как шаг 3 выше, Visual Studio откроет окно View Function с загруженной функцией.
  2. В левом нижнем углу этого экрана введите следующий json в поле Sample Input :
{
"month": "10",
"day": "28",
"year": "1979"
}

введите описание изображения здесь

  1. Последний шаг: Нажмите на зеленую кнопку Invoke. Функция будет работать на AWS, и ответ будет отображаться в нижнем правом окне отклика .


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow