😀
Azure Functions の Timer Trigger を Curl で手動実行してみた
Azure Functions でタイマートリガーを使用しているとします。何らかの理由で、スケジュール済みの時間以外に手動実行したいケースがあったりします。そこで、タイマートリガーを Curl で手動実行してみました。
検証用 Azure Functions を用意
bash
prefix=mnrfunc
region=japaneast
az group create \
--name ${prefix}-rg \
--location $region
az storage account create \
--name ${prefix}stor \
--resource-group ${prefix}-rg \
--sku Standard_LRS
az monitor log-analytics workspace create \
--workspace-name ${prefix}-log \
--resource-group ${prefix}-rg
az monitor app-insights component create \
--app ${prefix}-ai \
--location $region \
--resource-group ${prefix}-rg \
--workspace ${prefix}-log
az functionapp create \
--name ${prefix} \
--resource-group ${prefix}-rg \
--consumption-plan-location $region \
--runtime dotnet \
--functions-version 4 \
--storage-account ${prefix}stor \
--app-insights ${prefix}-ai \
--https-only \
--os-type Linux
ローカルでタイマートリガーの Functions を作成
bash
func init $prefix --dotnet
cd $prefix
func new --name sample --template "Timer trigger"
func start
func azure functionapp publish $prefix
こちらが、作成されたコードです。
sample.cs
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
namespace mnrfunc
{
public class sample
{
[FunctionName("sample")]
public void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
}
Curl で Azure Functions を手動実行
下記の input
に設定する値は何でも良いみたいです。
bash
masterkey=$(az functionapp keys list \
--name ${prefix} \
--resource-group ${prefix}-rg \
--query masterKey \
--output tsv)
curl -i https://$prefix.azurewebsites.net/admin/functions/sample \
-H "x-functions-key: $masterkey" \
-H "Content-Type: application/json" \
-d '{ "input": "test" }'
HTTP/2 202
date: Sat, 13 Jan 2024 00:36:40 GMT
server: Kestrel
content-length: 0
request-context: appId=cid-v1:2b3e2847-daf1-4dc6-8ddd-507e8cff0cd3
実行結果
下記赤枠がタイマートリガーの実行ログです。
下記赤枠が Curl で手動実行した日時です。
参考
Discussion