Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln använder du Azure Developer CLI (azd) för att skapa en Timer-utlösarfunktion för att köra en schemalagd aktivitet i Azure Functions. När du har verifierat koden lokalt distribuerar du den till en ny serverlös funktionsapp som du skapar som körs i en Flex Consumption-plan i Azure Functions.
Projektkällan använder azd för att skapa funktionsappen och relaterade resurser och för att distribuera din kod till Azure. Den här distributionen följer aktuella metodtips för säkra och skalbara Azure Functions-distributioner.
Som standard följer Flex Consumption-planen en faktureringsmodell för att betala för vad du använder , vilket innebär att du kan slutföra den här artikeln och bara medföra en liten kostnad på några USD cent eller mindre på ditt Azure-konto.
Viktigt!
Även om körning av schemalagda aktiviteter stödjer alla språk, har ett snabbstartsscenario för närvarande bara exempel för C#, Python och TypeScript. Slutför den här snabbstarten genom att välja ett av de språk som stöds överst i artikeln.
Förutsättningar
- Node.js 22 eller senare
Python 3.11 eller senare
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto kostnadsfritt.
Initiera projektet
azd init Använd kommandot för att skapa ett lokalt Azure Functions-kodprojekt från en mall.
Kör det här
azd initkommandot i en tom mapp i den lokala terminalen eller kommandotolken:azd init --template functions-quickstart-dotnet-azd-timer -e scheduled-dotnetDet här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen. Flaggan
-eanger ett namn för den aktuella miljön. Iazdbehåller miljön en unik distributionskontext för din app och du kan definiera mer än en. Miljönamnet används också i namnet på den resursgrupp som du skapar i Azure.Kör det här kommandot för att navigera till appmappen:
cd srcSkapa en fil med namnet local.settings.json i
srcmappen som innehåller dessa JSON-data:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "TIMER_SCHEDULE": "*/30 * * * * *" } }Den här filen krävs när den körs lokalt.
Kör det här
azd initkommandot i en tom mapp i den lokala terminalen eller kommandotolken:azd init --template functions-quickstart-typescript-azd-timer -e scheduled-tsDet här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen. Flaggan
-eanger ett namn för den aktuella miljön. Iazdbehåller miljön en unik distributionskontext för din app och du kan definiera mer än en. Miljönamnet används också i namnet på den resursgrupp som du skapar i Azure.Skapa en fil med namnet local.settings.json i
srcmappen som innehåller dessa JSON-data:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "TIMER_SCHEDULE": "*/30 * * * * *" } }Den här filen krävs när den körs lokalt.
Kör det här
azd initkommandot i en tom mapp i den lokala terminalen eller kommandotolken:azd init --template functions-quickstart-python-azd-timer -e scheduled-pyDet här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen. Flaggan
-eanger ett namn för den aktuella miljön. Iazdbehåller miljön en unik distributionskontext för din app och du kan definiera mer än en. Miljönamnet används också i namnet på den resursgrupp som du skapar i Azure.Skapa en fil med namnet local.settings.json i
srcmappen som innehåller dessa JSON-data:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "TIMER_SCHEDULE": "*/30 * * * * *" } }Den här filen krävs när den körs lokalt.
Skapa och aktivera en virtuell miljö
I rotmappen kör du dessa kommandon för att skapa och aktivera en virtuell miljö med namnet .venv:
python3 -m venv .venv
source .venv/bin/activate
Om Python inte installerar venv-paketet på Linux-distributionen kör du följande kommando:
sudo apt-get install python3-venv
Kör i din lokala miljö
Kör det här kommandot från appmappen i en terminal eller kommandotolk:
func start
Kör det här kommandot från appmappen i en terminal eller kommandotolk:
npm install npm start
När Functions-värden startar i den lokala projektmappen skriver den information om Timerfunktionen som utlöses till terminalens utdata. Du bör se att din timerutlösta funktion exekverar enligt det schema som definierats i din kod.
Standardschemat är
*/30 * * * * *, som körs var 30:e sekund.När du är klar trycker du på Ctrl+C i terminalfönstret för att stoppa
func.exevärdprocessen.
- Kör
deactivateför att stänga av den virtuella miljön.
Granska koden (valfritt)
Du kan granska koden som definierar timerutlösarfunktionen:
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!");
}
}
}
}
Du kan granska hela mallprojektet här.
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
});
Du kan granska hela mallprojektet här.
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!')
Du kan granska hela mallprojektet här.
När du har verifierat funktionen lokalt är det dags att publicera den till Azure.
Distribuera till Azure
Det här projektet är konfigurerat för att använda azd up kommandot för att distribuera koden till en ny funktionsapp i en Flex Consumption-plan i Azure.
Tips/Råd
Det här projektet innehåller en uppsättning Bicep-filer som azd använder för att skapa en säker distribution till en Flex-förbrukningsplan som följer bästa praxis.
Kör det här kommandot för att
azdskapa nödvändiga Azure-resurser i Azure och distribuera kodprojektet till den nya funktionsappen:azd upRotmappen innehåller den
azure.yamldefinitionsfil som krävs avazd.Om du inte redan är inloggad uppmanas du att autentisera med ditt Azure-konto.
Ange följande nödvändiga distributionsparametrar när du uppmanas att göra det:
Parameter Description Azure-prenumeration Prenumeration där dina resurser skapas. Azure-lokalisering Azure-region där du kan skapa resursgruppen som innehåller de nya Azure-resurserna. Endast regioner som för närvarande stöder Flex Consumption-planen visas. Kommandot
azd upanvänder ditt svar på dessa frågor med Bicep-konfigurationsfilerna för att slutföra dessa distributionsuppgifter:Skapa och konfigurera de här nödvändiga Azure-resurserna (motsvarande
azd provision):- Flex Consumption-plan och funktionsapp
- Azure Storage (krävs) och Application Insights (rekommenderas)
- Åtkomstprinciper och roller för ditt konto
- Tjänst-till-tjänst-anslutningar med hanterade identiteter (i stället för lagrade anslutningssträng)
- Virtuellt nätverk för säker körning av både funktionsappen och andra Azure-resurser
Paketera och distribuera koden till distributionscontainern (motsvarande
azd deploy). Appen startas sedan och körs i det distribuerade paketet.
När kommandot har slutförts visas länkar till de resurser som du har skapat.
Verifiera driftsättningen
När distributionen är klar börjar timer-utlösarfunktionen automatiskt köras i Azure baserat på dess schema.
I Azure-portalen går du till din nya funktionsapp.
Välj Loggström i den vänstra menyn för att övervaka funktionskörningarna i realtid.
Du bör se loggposter som visar att timerutlösarfunktionen körs enligt schemat.
Distribuera om koden
azd up Kör kommandot så många gånger du behöver både etablera dina Azure-resurser och distribuera koduppdateringar till funktionsappen.
Anmärkning
Distribuerade kodfiler skrivs alltid över av det senaste distributionspaketet.
Dina första svar på azd frågor och eventuella miljövariabler som genereras av azd lagras lokalt i din namngivna miljö.
azd env get-values Använd kommandot för att granska alla variabler i din miljö som användes när du skapade Azure-resurser.
Rensa resurser
När du är klar med funktionsappen och relaterade resurser använder du det här kommandot för att ta bort funktionsappen och dess relaterade resurser från Azure och undvika ytterligare kostnader:
azd down --no-prompt
Anmärkning
Alternativet --no-prompt instruerar azd dig att ta bort resursgruppen utan någon bekräftelse från dig.
Det här kommandot påverkar inte ditt lokala kodprojekt.