Бессерверные функции Azure — это тип службы облачных вычислений, предлагаемый Microsoft Azure. Они позволяют выполнять небольшие одноцелевые функции кода в облаке без необходимости использования выделенного сервера или виртуальной машины.
С бессерверными функциями Azure вы можете писать код на предпочитаемом вами языке программирования, таком как C#, Java, JavaScript или Python. Код выполняется только тогда, когда он инициируется событием, таким как HTTP-запрос, сообщение в очереди или изменение в базе данных.
Бессерверные функции Azure являются масштабируемыми и экономичными, поскольку вы платите только за точное количество ресурсов, потребляемых вашими функциями во время их работы. Это делает их идеальным выбором для приложений с непредсказуемыми или спорадическими моделями трафика.
Бессерверные функции Azure можно использовать для различных задач, таких как обработка данных, выполнение фоновых задач и интеграция с другими службами Azure. Они также предоставляют встроенные функции безопасности, такие как управление идентификацией и доступом, которые помогают защитить ваши приложения и данные.
Вот пошаговые инструкции по настройке функции Azure на портале Azure:
- Войдите на портал Azure по адресу https://portal.azure.com/.
- Нажмите на кнопку «Создать ресурс» (+) в левой части страницы.
- В поле «Поиск в Marketplace» введите «Функциональное приложение» и выберите «Функциональное приложение» в раскрывающемся меню.
- Нажмите кнопку «Создать», чтобы начать создание нового функционального приложения.
- Заполните обязательные поля на вкладке «Основные», включая подписку, группу ресурсов и имя приложения-функции.
- Выберите стек среды выполнения и версию для приложения-функции. Вы можете выбрать один из нескольких вариантов, таких как .NET, Node.js и Python.
- В разделе «Хостинг» выберите «План потребления» в качестве плана хостинга. Это позволит вашей функции автоматически масштабироваться и взимать плату только за ресурсы, используемые во время работы функции.
- Выберите «Учетную запись хранения», которую вы хотите использовать, или создайте новую.
- Нажмите «Проверить + создать», чтобы просмотреть настройки и создать приложение-функцию.
- Нажмите «Создать», чтобы создать приложение-функцию.
После создания приложения-функции вы можете добавить к нему функции, щелкнув раздел «Функции» в меню слева и выбрав «Новая функция». Оттуда вы можете выбрать один из нескольких шаблонов, включая триггер HTTP, триггер таймера и триггер Cosmos DB, для создания своей функции.
Вот пример создания бессерверной функции Azure с помощью ASP.NET Core и Swagger:
Во-первых, вам нужно будет создать новый проект функции Azure в Visual Studio:
- Откройте Visual Studio и выберите «Создать новый проект».
- Выберите «Функции Azure» из списка шаблонов проектов и нажмите «Далее».
- Выберите «Функции Azure v3 (.NET Core)» и нажмите «Далее».
- Введите имя для вашего проекта и нажмите «Создать».
После создания проекта вы можете добавить в него поддержку Swagger, выполнив следующие действия:
- Установите пакет NuGet Swashbuckle.AspNetCore, выполнив следующую команду в консоли диспетчера пакетов:
Install-Package Swashbuckle.AspNetCore
- Откройте файл Startup.cs в своем проекте и добавьте следующий код в метод ConfigureServices:
services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My Azure Function", Version = "v1" }); });
3. Добавьте следующий код в метод Configure:
app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My Azure Function v1"); });
4. Создайте новую функцию Azure, щелкнув правой кнопкой мыши папку «Функции» в вашем проекте и выбрав «Добавить» › «Новая функция Azure».
5. Выберите «Триггер HTTP» в качестве типа функции и введите имя для вашей функции.
6. В разделе «Аутентификация» выберите «Анонимный» в качестве уровня аутентификации.
7. Замените содержимое файла .cs функции следующим кодом:
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace MyFunctionNamespace { public static class MyFunction { [FunctionName("MyFunction")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string name = req.Query["name"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); name ??= data?.name; return new OkObjectResult($"Hello, {name}"); } } }
Этот код определяет триггерную функцию HTTP, которая принимает необязательный параметр «имя» и возвращает приветственное сообщение.
Теперь вы можете запустить свою функцию и протестировать ее с помощью Swagger, выполнив следующие действия:
- Запустите проект в Visual Studio, нажав F5.
- Откройте веб-браузер и перейдите по адресу http://localhost:7071/swagger/index.html.
- Нажмите на свою функцию в списке доступных API.
- Нажмите кнопку «Попробовать».
- Введите имя в поле «имя» (необязательно) и нажмите «Выполнить».
- В ответе должно отображаться приветственное сообщение с введенным вами именем (или сообщение по умолчанию, если имя не было введено).
Вот шаги по развертыванию вашей функции Azure, созданной с помощью ASP.NET Core, на портале Azure:
- На портале Azure перейдите к приложению-функции, содержащему функцию, которую вы хотите развернуть.
- Нажмите на раздел «Функции» в меню слева и нажмите на функцию, которую вы хотите развернуть.
- Нажмите на вкладку «Код + Тест» в верхнем меню, чтобы открыть редактор кода функции.
- В редакторе кода нажмите на кнопку «Развернуть» в верхнем меню.
- Выберите вариант развертывания, который вы хотите использовать. Вы можете выбрать между «Local Git», «FTP» или «GitHub».
- Если вы выберете «Локальный Git», следуйте инструкциям, чтобы создать нового пользователя развертывания и загрузить профиль развертывания. Вы будете использовать этот профиль для отправки кода в приложение-функцию.
- Если вы выберете «FTP», вам потребуется использовать FTP-клиент для загрузки файлов кода в функциональное приложение.
- Если вы выберете «GitHub», вам нужно будет пройти аутентификацию в GitHub и выбрать репозиторий, содержащий ваш код.
- После развертывания кода вы можете протестировать свою функцию, нажав кнопку «Тест/Выполнить» в верхнем меню.
Вот и все! Вы успешно развернули функцию Azure, созданную с помощью ASP.NET Core, на портале Azure, используя вариант развертывания «Локальный Git», «FTP» или «GitHub».
Вот как вы можете развернуть свою функцию Azure, созданную с помощью ASP.NET Core, в качестве контейнера Docker:
- Создайте Dockerfile для своей функции Azure. Вот пример:
# Use the .NET Core runtime as a base image FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine # Set the working directory to /app WORKDIR /app # Copy the source code into the container COPY . /app # Expose the port that the function will listen on EXPOSE 80 # Set the environment variable for the Azure Functions runtime ENV AzureWebJobsScriptRoot=/app # Start the Azure Functions runtime ENTRYPOINT ["dotnet", "MyFunction.dll"]
2. Создайте образ Docker:
docker build -t myfunction .
Замените myfunction
именем, которое вы хотите дать своему образу Docker.
3. Запустите контейнер Docker:
docker run -d -p 80:80 myfunction
Это запустит новый контейнер Docker с вашей функцией Azure, работающей внутри.
4. Убедитесь, что ваша функция работает правильно, отправив HTTP-запрос на адрес http://localhost:80/api/MyFunction?name=John.
Замените MyFunction
на имя вашей функции и name=John
на любые параметры запроса, ожидаемые вашей функцией.
Вот и все! Вы успешно развернули функцию Azure, созданную с помощью ASP.NET Core, в качестве контейнера Docker.