Упражнение. Создание функции в локальной среде с помощью Core Tools
Набор Azure Functions Core Tools позволяет разрабатывать функции на локальном компьютере, используя следующее:
- создав файлы и папки, необходимые для проекта функций;
- указав узел функций, который выполняется локально из корневого каталога проекта.
Вы решили локально начать работу с Функции Azure путем разработки функции, которая вычисляет простой интерес. В конечном итоге можно создать более сложные функции, которые работают вместе и вызывать другие службы и базы данных. Использование основных инструментов для создания функции, которая выполняет базовое вычисление кредита, является хорошим началом. Вы также хотите попробовать выполнить функцию на своем компьютере перед ее публикацией в Azure. Все это можно сделать в Azure Cloud Shell с помощью Core Tools.
Azure Cloud Shell поставляется с основными инструментами, Azure CLI и редактором, который можно использовать для написания кода. Прежде чем продолжить, выберите " Активировать песочницу " выше.
Создание локального проекта Функций Azure
В этом упражнении используйте Cloud Shell для разработки первой функции JavaScript с помощью основных инструментов. Cloud Shell уже имеет правильные версии основных средств и Node.js установлены.
В корневой папке выполните команду
func init
, чтобы создать проект функций в новойloan-wizard
папке.func init loan-wizard
При появлении запроса на выбор рабочей среды выполнения введите 3 для узла.
При появлении запроса на выбор языка введите 1 для javascript.
В выходных данных перечислены файлы, записываемые на диск, включая следующие файлы:
- host.json поддерживает конфигурацию на уровне приложения как для экземпляра среды выполнения, так и для определенных типов триггеров и привязки.
- local.settings.json задает поведение только для локальной среды и параметры приложения (переменные локальной среды).
- package.json — это предназначенный для среды JavaScript файл, который отслеживает все пакеты, устанавливаемые и используемые в коде.
- .gitignore и extensions.json — это файлы конфигурации, используемые средством управления версиями Git и Visual Studio Code соответственно. Вы можете игнорировать их сейчас.
Создание функции, активируемой по HTTP
Пришло время создать функцию!
В Cloud Shell перейдите к новому
loan-wizard
каталогу.cd ~/loan-wizard
Запустите
func new
, чтобы запустить мастер создания функции.func new
При появлении запроса на выбор шаблона введите 7 для триггера HTTP.
При появлении запроса на указание имени функции для триггера HTTP введите
simple-interest
.Выполните следующую команду, чтобы открыть редактор Cloud Shell.
code .
Мастер создает новый файл в проекте функций под
src/functions
именем simple-interest.js, который содержит содержимое шаблона по умолчанию. Этот код поддерживает модель программирования Node.js версии 4 для Функции Azure. Уделите немного времени изучению файлов проекта в редакторе. На снимке экрана показана развернутая папка с simple-interest.js открыть в редакторе.
Реализация функции simple-interest
Реализация функции по умолчанию, созданная для нас в simple-interest.js ищет входные данные, вызываемые name
в строке запроса или тексте входящего HTTP-запроса, и возвращает строкуHello, [name]
. Это хорошая иллюстрация использования триггера HTTP, но вы хотите заменить этот код кодом, который вычисляет простой интерес из трех входных параметров.
В области ФАЙЛОВ редактора разверните папку функций src>и выберите simple-interest.js, чтобы открыть файл в редакторе.
Замените полное содержимое simple-interest.js следующим кодом:
const { app } = require('@azure/functions'); app.http('simple-interest', { methods: ['GET','POST'], authLevel: 'anonymous', handler: async (request, context) => { const principal = parseFloat(request.query.get('principal')); const rate = parseFloat(request.query.get('rate')); const term = parseFloat(request.query.get('term')); if ([principal, rate, term].some(isNaN)) { // If any empty or non-numeric values, return a 400 response with an // error message return { status: 400, body: "Please supply principal, rate and term in the query string" }; } else { // Otherwise set the response body to the product of the three values return { body: principal * rate * term }; } } });
Этот скрипт ищет параметры с именем
principal
,rate
аterm
также в строке запроса HTTP-запроса. Затем он возвращает результат простого вычисления процентов (principal * rate * term
).Сохраните файл, нажав клавиши CTRL+S и закройте редактор, нажав клавиши CTRL+Q.
Запуск функции в Cloud Shell
Чтобы запустить новую функцию локально, чтобы попробовать ее, используйте func start
для запуска среды выполнения функций (func.exe) в фоновом процессе, чтобы использовать командную строку во время ее выполнения. Затем используйте средство командной строки для curl
взаимодействия с функцией.
Если вы используете Core Tools с собственного компьютера, вы можете просто использовать curl
из второго окна терминала или веб-браузера. Выходные данные, созданные core Tools, отображаются в режиме реального времени в первом окне терминала. В Cloud Shell вы ограничены одним терминалом, поэтому в фоновом процессе необходимо запустить основные инструменты (func.exe).
Выполните приведенную ниже команду, чтобы запустить узел функций в фоновом режиме.
func start &> ~/output.txt &
Как и в случае с
func new
, в Cloud Shell должен быть открыт каталогloan-wizard
.Теперь узел функций записывает выходные данные в файл ~/output.txt. Вы можете продолжать использовать командную строку во время его выполнения.
Используйте команду
ps
, чтобы проверить выполнение процессаfunc
.Введите следующую команду, чтобы просмотреть журнал вывода.
code ~/output.txt
В выходных данных отображается сообщение, которое списки
Functions: simple-interest:
доступны как GET, так и HTTP-запросhttp://localhost:7071/api/simple-interest
POST.Примечание.
Если появится сообщение об ошибке, нажмите клавиши CTRL+C, чтобы остановить узел. Убедитесь, что содержимое файла кода совпадает с примером.
Этот URL-адрес localhost не опубликован в Интернете. Он доступен только для средств, работающих в сеансе Cloud Shell.
Закройте редактор, нажав клавиши CTRL+Q.
Выполните следующую команду, чтобы отправить HTTP-запрос GET в локальную функцию.
curl "http://localhost:7071/api/simple-interest" -w "\n"
Выходные данные
Please supply principal, rate and term in the query string
указывают на то, что наша функция была успешно вызвана и может возвращать ответ, но вы не вызываете ее должным образом. Необходимо указать параметры в рамках HTTP-запроса.Снова вызовите функцию. На этот раз укажите значение для каждого из параметров строки запроса.
curl "http://localhost:7071/api/simple-interest?principal=5000&rate=.035&term=36" -w "\n"
На этот раз выходные данные имеют значение
6300
. Ваша функция работает должным образом!Введите следующую команду, чтобы снова просмотреть журнал вывода.
code ~/output.txt
После записей журнала запуска вы увидите добавленный набор записей журнала с меткой времени при каждом вызове функции:
curl
[2024-02-20T06:25:56.700Z] Executing 'Functions.simple-interest' (Reason='This function was programmatically called via the host APIs.', Id=5daf20c3-f204-41bb-a5b9-021acaf17c04) [2024-02-20T06:25:56.893Z] Executed 'Functions.simple-interest' (Succeeded, Id=5daf20c3-f204-41bb-a5b9-021acaf17c04, Duration=228ms)
Закройте редактор, нажав клавиши CTRL+Q.