Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье вы используете Azure Developer CLI (azd), чтобы создать функцию триггера таймера для запуска запланированной задачи в Azure Functions. После локальной проверки кода вы развернете его в новом бессерверном функциональном приложении, которое создается в плане Flex Consumption в Azure Functions.
Источник проекта используется azd для создания приложения-функции и связанных ресурсов и развертывания кода в Azure. Это развертывание следует текущим рекомендациям по безопасным и масштабируемым Функции Azure развертываниям.
По умолчанию, план потребления Flex следует модели выставления счетов с оплатой за то, что вы используете, что означает, что вы можете закончить чтение этой статьи и это будет стоить вам всего несколько центов США или меньше в вашей учетной записи Azure.
Это важно
Хотя выполнение запланированных задач поддерживается для всех языков, этот сценарий краткого руководства в настоящее время содержит только примеры для C#, Python и TypeScript. Чтобы завершить работу с этим кратким руководством, выберите один из этих поддерживаемых языков в верхней части статьи.
Предпосылки
- Node.js 22 или более поздней версии
Python 3.11 или более поздней версии
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Инициализируйте проект
azd init Используйте команду для создания локального проекта кода Функций Azure из шаблона.
В локальном терминале или командной строке выполните следующую
azd initкоманду в пустой папке:azd init --template functions-quickstart-dotnet-azd-timer -e scheduled-dotnetЭта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке. Флаг
-eзадает имя текущей среды. Вazdсреде поддерживается уникальный контекст развертывания для вашего приложения, и вы можете определить более одного контекста. Имя среды также используется в имени группы ресурсов, создаваемой в Azure.Выполните следующую команду, чтобы перейти к папке приложения:
cd srcСоздайте файл с именемlocal.settings.json в папке
src, содержащей эти данные JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "TIMER_SCHEDULE": "*/30 * * * * *" } }Этот файл требуется при локальном запуске.
В локальном терминале или командной строке выполните следующую
azd initкоманду в пустой папке:azd init --template functions-quickstart-typescript-azd-timer -e scheduled-tsЭта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке. Флаг
-eзадает имя текущей среды. Вazdсреде поддерживается уникальный контекст развертывания для вашего приложения, и вы можете определить более одного контекста. Имя среды также используется в имени группы ресурсов, создаваемой в Azure.Создайте файл с именемlocal.settings.json в папке
src, содержащей эти данные JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "TIMER_SCHEDULE": "*/30 * * * * *" } }Этот файл требуется при локальном запуске.
В локальном терминале или командной строке выполните следующую
azd initкоманду в пустой папке:azd init --template functions-quickstart-python-azd-timer -e scheduled-pyЭта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке. Флаг
-eзадает имя текущей среды. Вazdсреде поддерживается уникальный контекст развертывания для вашего приложения, и вы можете определить более одного контекста. Имя среды также используется в имени группы ресурсов, создаваемой в Azure.Создайте файл с именемlocal.settings.json в папке
src, содержащей эти данные JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "TIMER_SCHEDULE": "*/30 * * * * *" } }Этот файл требуется при локальном запуске.
Создание и активация виртуальной среды
В корневой папке выполните следующие команды, чтобы создать и активировать виртуальную среду с именем .venv:
python3 -m venv .venv
source .venv/bin/activate
Если Python не устанавливает пакет venv в дистрибутиве Linux, выполните следующую команду:
sudo apt-get install python3-venv
Запуск в локальной среде
Выполните следующую команду из папки приложения в терминале или командной строке:
func start
Выполните следующую команду из папки приложения в терминале или командной строке:
npm install npm start
Когда узел Функций запускается в локальной папке проекта, он записывает сведения о активированной функции таймера в выходные данные терминала. Функция таймера должна выполняться в зависимости от расписания, определенного в коде.
Расписание по умолчанию —
*/30 * * * * *, которое выполняется каждые 30 секунд.По завершении нажмите клавиши CTRL+C в окне терминала, чтобы остановить
func.exeпроцесс узла.
- Выполните команду
deactivate, чтобы завершить работу виртуальной среды.
Просмотр кода (необязательно)
Вы можете просмотреть код, определяющий функцию триггера таймера:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Timer;
using Microsoft.Extensions.Logging;
namespace Company.Function
{
public class timerFunction
{
private readonly ILogger _logger;
public timerFunction(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<timerFunction>();
}
[Function("timerFunction")]
public void Run(
[TimerTrigger("%TIMER_SCHEDULE%", RunOnStartup = true)] TimerInfo myTimer,
FunctionContext context
)
{
_logger.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
if (myTimer.IsPastDue)
{
_logger.LogWarning("The timer is running late!");
}
}
}
}
Вы можете просмотреть полный проект шаблона здесь.
import { app, InvocationContext, Timer } from '@azure/functions';
export async function timerFunction(myTimer: Timer, context: InvocationContext): Promise<void> {
context.log(`TypeScript Timer trigger function executed at: ${new Date().toISOString()}`);
if (myTimer.isPastDue) {
context.warn("The timer is running late!");
}
}
app.timer('timerFunction', {
schedule: '%TIMER_SCHEDULE%',
runOnStartup: true,
handler: timerFunction
});
Вы можете просмотреть полный проект шаблона здесь.
import datetime
import logging
import azure.functions as func
# Create the function app instance
app = func.FunctionApp()
@app.timer_trigger(schedule="%TIMER_SCHEDULE%",
arg_name="mytimer",
run_on_startup=True,
use_monitor=False)
def timer_function(mytimer: func.TimerRequest) -> None:
utc_timestamp = datetime.datetime.now(datetime.timezone.utc).isoformat()
logging.info(f'Python timer trigger function executed at: {utc_timestamp}')
if mytimer.past_due:
logging.warning('The timer is running late!')
Вы можете просмотреть полный проект шаблона здесь.
После локальной проверки функции пора опубликовать ее в Azure.
Развертывание в Azure
Этот проект настроен на использование команды azd up для развертывания вашего кода в новом функциональном приложении в плане Flex Consumption в Azure.
Подсказка
Этот проект включает набор файлов Bicep, используемых azd для создания безопасного развертывания в плане потребления Flex, который следует рекомендациям.
Выполните следующую команду, чтобы
azdсоздать необходимые ресурсы Azure в Azure и развернуть проект кода в новом приложении-функции:azd upКорневая папка содержит файл определения, необходимый
azure.yamlazd.Если вы еще не вошли, вам будет предложено выполнить проверку подлинности с помощью учетной записи Azure.
При появлении запроса укажите следующие необходимые параметры развертывания:
Параметр Description Подписка Azure Подписка, в которой создаются ресурсы. Расположение Azure Регион Azure, в котором создается группа ресурсов, содержащая новые ресурсы Azure. Отображаются только регионы, поддерживающие план потребления Flex. Команда
azd upиспользует ответ на эти запросы с файлами конфигурации Bicep для выполнения следующих задач развертывания:Создайте и настройте эти необходимые ресурсы Azure (эквивалентно
azd provision):- План потребления и приложение-функция Flex
- служба хранилища Azure (обязательно) и Application Insights (рекомендуется)
- Политики и роли доступа для учетной записи
- Подключения между службами с помощью управляемых удостоверений (вместо хранимых строка подключения)
- Виртуальная сеть для безопасного запуска приложения-функции и других ресурсов Azure
Упаковайте и разверните код в контейнере развертывания (эквивалентно
azd deploy). Затем приложение запускается и запускается в развернутом пакете.
После успешного завершения команды вы увидите ссылки на созданные ресурсы.
Проверка развертывания
После завершения развертывания функция триггера таймера автоматически запускается в Azure на основе расписания.
На портале Azure перейдите к новому приложению-функции.
Выберите поток журнала в меню слева, чтобы отслеживать выполнение функции в режиме реального времени.
Вы увидите записи журнала, которые показывают функцию триггера таймера, выполняемую в соответствии с расписанием.
Повторное развертывание кода
Выполните команду azd up столько раз, сколько потребуется, чтобы развернуть обновления кода в функции-приложении и настроить ресурсы Azure.
Замечание
Развернутые файлы кода всегда перезаписываются последним пакетом развертывания.
Исходные ответы на azd запросы и любые переменные среды, созданные с помощью azd , хранятся локально в именованной среде.
azd env get-values Используйте команду, чтобы просмотреть все переменные в вашей среде, которые использовались при создании ресурсов Azure.
Очистите ресурсы
Когда вы закончите работу с приложением-функцией и связанными ресурсами, используйте эту команду, чтобы удалить приложение-функцию и связанные с ним ресурсы из Azure и избежать дополнительных затрат:
azd down --no-prompt
Замечание
Параметр --no-prompt указывает azd удалить группу ресурсов без подтверждения.
Эта команда не влияет на локальный проект кода.