Бессерверные вычисления приобрели популярность в последние несколько лет прежде всего потому, что они поддерживают простоту разработки и высокую масштабируемость. Бессерверные функции не имеют состояния, управляются событиями, обладают высокой масштабируемостью и не зависят от базовой инфраструктуры. AWS Lambda – это ведущий пример платформы бессерверных вычислений.

В этой статье мы поговорим о том, как использовать .NET Core для создания и развертывания бессерверных функций на AWS Lambda. Для работы с примерами кода, приведенными в этой статье, в вашей системе должна быть установлена ​​Visual Studio 2019. Если у вас еще нет копии, вы можете скачать Visual Studio 2019 здесь. Кроме того, вам понадобится AWS Toolkit для Visual Studio 2019, который вы можете Скачать здесь.

Естественно, у вас также должна быть учетная запись AWS, поскольку мы будем создавать и развертывать наши бессерверные функции в AWS Lambda. Если у вас нет учетной записи AWS, вы можете создайте бесплатный здесь.

Типы проектов AWS Lambda в Visual Studio

AWS Toolkit для Visual Studio 2019 включает два шаблона проектов .NET Core, которые помогут вам быстро создавать и развертывать функции AWS Lambda на основе .NET Core. При работе с AWS Lambda в Visual Studio вы можете выбрать один из двух типов проектов:

  1. Проект AWS Lambda: Выберите тип проекта AWS Lambda, если вы хотите создать и развернуть отдельную функцию AWS Lambda. В этой статье мы будем использовать тип проекта AWS Lambda для разработки и развертывания функции AWS Lambda.
  2. Проект бессерверного приложения AWS: Выберите тип проекта AWS Serverless Application, если вы разрабатываете несколько функций AWS Lambda, которые вы будете развертывать вместе как часть приложения, используя шаблон AWS CloudFormation для организации развертывания. Например, вы можете использовать этот тип проекта для создания базы данных, добавления ролей IAM, одновременного развертывания нескольких функций.

Создайте новый проект AWS Lambda в Visual Studio 2019

Итак, давайте создадим проект AWS Lambda в Visual Studio 2019. Выполните следующие действия, чтобы создать новый проект AWS Lambda с использованием .NET Core в Visual Studio 2019.

  1. Запустите интегрированную среду разработки Visual Studio.
  2. Нажмите «Создать новый проект».
  3. В окне «Создать новый проект» найдите и выберите шаблон AWS Lambda Project (.NET Core – C #) из отображаемого списка шаблонов.
  4. Нажмите “Далее.
  5. В окне «Настроить новый проект» укажите имя и расположение для нового проекта.
  6. При желании установите флажок «Поместить решение и проект в один каталог», в зависимости от ваших предпочтений.
  7. Щелкните “Создать”.
  8. Выберите схему пустой функции. (См. Рисунок 1.)
  9. Щелкните Готово.
aws лямбда чистое ядро ​​01 IDG

AWS Toolkit для Visual Studio предоставляет ряд схем быстрого запуска для проектов AWS Lambda.

Будет создан новый проект AWS Lambda. Обратите внимание, что проект включает файл с именем Function.cs, который содержит следующий код.

using Amazon.Lambda.Core;
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.
           SystemTextJson.DefaultLambdaJsonSerializer))]
namespace IDGAWSLambda
{
    public class Function
    {
       public string FunctionHandler(string input, ILambdaContext context)
        {
            return input?.ToUpper();
        }
    }
}

Мы будем работать с этим кодом для создания нашей функции AWS Lambda в следующих разделах этой статьи.

Как работает функция AWS Lambda?

При работе с функциями AWS Lambda часто встречаются два ключевых компонента – обработчик функции и объект контекста.

Обработчик функции – это точка входа для начала выполнения вашей лямбда-функции. Обработчик функции принимает два параметра: входные данные в качестве первого параметра и лямбда-контекст в качестве второго параметра. Обратите внимание, что лямбда-функции могут вызываться синхронно или асинхронно. Если ваши лямбда-функции работают долго, вы захотите воспользоваться преимуществами асинхронного вызова.

Объект контекста содержит данные, относящиеся к вызову, то есть метод вызова, а также состояние выполнения. Эта информация передается обработчику функции во время выполнения. Например, вы можете воспользоваться контекстом, чтобы проверить детали распределения памяти или получить количество миллисекунд, оставшихся до истечения времени ожидания выполнения функции.

Создайте простую лямбда-функцию в Visual Studio 2019

См. Файл Function.cs, содержащий класс Function, который был автоматически создан с вашим новым проектом AWS Lambda. Замените код файла Function.cs следующим кодом:

using Amazon.Lambda.Core;
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
namespace IDGAWSLambda
{
    public class Function
    {
        public string FunctionHandler(string input, ILambdaContext context)
        {
            return $"Welcome: {input}";
        }
    }
}

Как видите, наша сверхпростая функция принимает на вход строку и возвращает строку с префиксом «Добро пожаловать:».

Разверните функцию Lambda в AWS Lambda

Вы можете развернуть функцию AWS Lambda двумя разными способами: с помощью AWS Toolkit для Visual Studio или с помощью консоли AWS. В этом примере мы будем использовать AWS Toolkit для развертывания нашей функции Lambda.

Выполните действия, описанные ниже, чтобы развернуть функцию в AWS Lambda.

  1. Щелкните проект правой кнопкой мыши в окне обозревателя решений.
  2. Нажмите «Опубликовать в AWS Lambda …»
  3. На экране «Загрузить в AWS Lambda» вы можете указать имя функции, описание, структуру, версию среды выполнения Lambda, имя сборки, имя типа, имя метода и т. Д. Все они будут заполнены автоматически, но вы можете изменить их при желании. (См. Рисунок 2.)
  4. Нажмите “Далее.
  5. На экране «Подробная информация о дополнительных функциях» вы можете указать роль IAM, чтобы разрешить вашей функции Lambda доступ к сервисам AWS, таким как S3.
  6. Щелкните Загрузить.
aws лямбда чистое ядро ​​02 IDG

Рисунок 2: Детали вашей лямбда-функции будут заполнены автоматически, но вы можете их изменить.

После успешного развертывания вам будет представлен экран просмотра функций. Когда вы вводите здесь строку и нажимаете Invoke, вы увидите следующий результат:

aws лямбда чистое ядро ​​03 IDG

Рисунок 3. Наша простая функция AWS Lambda в действии.

Получить информацию из объекта контекста лямбда-функции

В следующем фрагменте кода показано, как можно написать лямбда-функцию, которая может возвращать информацию из объекта контекста, такую ​​как идентификатор запроса, имя функции, версия функции, оставшееся время и ограничение памяти.

public string FunctionHandler(ILambdaContext context)
{
    string message = $"Request Id: " + context.AwsRequestId + ", ";
    message += "Function Name: " + context.FunctionName + ", ";
    message += "Function Version: " + context.FunctionVersion + ", ";
    message += "Time Remaining: " + context.RemainingTime + ", ";
    message += "Memory Limit (in MB): " +
                context.MemoryLimitInMB.ToString();
    return message;
}

Проверьте свою функцию Lambda в Консоли управления AWS

Теперь вы можете протестировать функцию Lambda из Консоли управления AWS, выполнив действия, описанные ниже.

  1. В Консоли управления AWS нажмите Все службы -> Lambda.
  2. Из отображаемого списка лямбда-функций выберите функцию, которую вы хотите протестировать (в нашем примере имя функции – «Функция»).
  3. На следующем экране выберите вкладку Test.
  4. Нажмите «Тест», чтобы выполнить лямбда-функцию.
aws лямбда чистое ядро ​​04 IDG

Рисунок 4: Отображение информации из объекта контекста нашей простой лямбда-функции.

Прелесть бессерверных функций в том, что их легко создать, и вам не нужно беспокоиться о базовой инфраструктуре. Вы можете сосредоточиться на создании своих функций, не беспокоясь об исправлениях на уровне ОС, подключении к сети, управлении и обслуживании виртуальных машин или пороговых значениях масштабирования.

Вы можете использовать .NET Core и C # для разработки бессерверных функций для AWS Lambda, Microsoft Azure Functions или Google Cloud Functions. Я напишу больше об использовании .NET Core и C # для бессерверных вычислений в своих будущих публикациях здесь.

Авторские права © 2021 IDG Communications, Inc.


#Как #создавать #функции #AWS #Lambda #NET #Core

Source link