Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel verwenden Sie die Azure Developer CLI (azd) zum Erstellen einer Timertriggerfunktion zum Ausführen einer geplanten Aufgabe in Azure Functions. Nachdem Sie den Code lokal überprüft haben, stellen Sie ihn in einer neuen serverlosen Funktions-App bereit, die Sie in einem Flex-Verbrauchsplan in Azure Functions erstellen.
Die Projektquelle verwendet azd , um die Funktions-App und zugehörige Ressourcen zu erstellen und Ihren Code in Azure bereitzustellen. Diese Bereitstellung folgt den aktuellen bewährten Methoden für sichere und skalierbare Azure Functions-Bereitstellungen.
Standardmäßig folgt der Flex-Verbrauchsplan einem Zahlung nach Nutzung-Abrechnungsmodell, was bedeutet, dass Sie diese Aufgabe abschließen können und nur geringe Kosten von wenigen US-Cent oder weniger in Ihrem Azure-Konto verursachen.
Von Bedeutung
Während die Ausführung geplanter Aufgaben für alle Sprachen unterstützt wird, enthält dieses Schnellstartszenario derzeit nur Beispiele für C#, Python und TypeScript. Um diese Schnellstartanleitung abzuschließen, wählen Sie oben im Artikel eine dieser unterstützten Sprachen aus.
Voraussetzungen
- Node.js 22 oder höher
Python 3.11 oder höher
Ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen.
Initialisieren des Projekts
Verwenden Sie den azd init Befehl, um ein lokales Azure Functions-Codeprojekt aus einer Vorlage zu erstellen.
Führen Sie in Ihrem lokalen Terminal oder in der Eingabeaufforderung diesen
azd init-Befehl in einem leeren Ordner aus:azd init --template functions-quickstart-dotnet-azd-timer -e scheduled-dotnetMit diesem Befehl werden die Projektdateien aus dem Vorlagen-Repository abgerufen und das Projekt im aktuellen Ordner initialisiert. Das
-e-Flag legt einen Namen für die aktuelle Umgebung fest. Inazdder Umgebung wird ein eindeutiger Bereitstellungskontext für Ihre App verwaltet, und Sie können mehrere definieren. Der Umgebungsname wird auch im Namen der Ressourcengruppe verwendet, die Sie in Azure erstellen.Führen Sie diesen Befehl aus, um zum App-Ordner zu navigieren:
cd srcErstellen Sie eine Datei mit dem Namen local.settings.json im Ordner, der
srcdiese JSON-Daten enthält:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "TIMER_SCHEDULE": "*/30 * * * * *" } }Diese Datei ist erforderlich, wenn sie lokal ausgeführt wird.
Führen Sie in Ihrem lokalen Terminal oder in der Eingabeaufforderung diesen
azd init-Befehl in einem leeren Ordner aus:azd init --template functions-quickstart-typescript-azd-timer -e scheduled-tsMit diesem Befehl werden die Projektdateien aus dem Vorlagen-Repository abgerufen und das Projekt im aktuellen Ordner initialisiert. Das
-e-Flag legt einen Namen für die aktuelle Umgebung fest. Inazdder Umgebung wird ein eindeutiger Bereitstellungskontext für Ihre App verwaltet, und Sie können mehrere definieren. Der Umgebungsname wird auch im Namen der Ressourcengruppe verwendet, die Sie in Azure erstellen.Erstellen Sie eine Datei mit dem Namen local.settings.json im Ordner, der
srcdiese JSON-Daten enthält:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "TIMER_SCHEDULE": "*/30 * * * * *" } }Diese Datei ist erforderlich, wenn sie lokal ausgeführt wird.
Führen Sie in Ihrem lokalen Terminal oder in der Eingabeaufforderung diesen
azd init-Befehl in einem leeren Ordner aus:azd init --template functions-quickstart-python-azd-timer -e scheduled-pyMit diesem Befehl werden die Projektdateien aus dem Vorlagen-Repository abgerufen und das Projekt im aktuellen Ordner initialisiert. Das
-e-Flag legt einen Namen für die aktuelle Umgebung fest. Inazdder Umgebung wird ein eindeutiger Bereitstellungskontext für Ihre App verwaltet, und Sie können mehrere definieren. Der Umgebungsname wird auch im Namen der Ressourcengruppe verwendet, die Sie in Azure erstellen.Erstellen Sie eine Datei mit dem Namen local.settings.json im Ordner, der
srcdiese JSON-Daten enthält:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "TIMER_SCHEDULE": "*/30 * * * * *" } }Diese Datei ist erforderlich, wenn sie lokal ausgeführt wird.
Erstellen und Aktivieren einer virtuellen Umgebung
Führen Sie im Stammordner die folgenden Befehle aus, um eine virtuelle Umgebung mit dem Namen „.venv“ zu erstellen und zu aktivieren:
python3 -m venv .venv
source .venv/bin/activate
Wenn Python das venv-Paket nicht in Ihrer Linux-Verteilung installiert, führen Sie den folgenden Befehl aus:
sudo apt-get install python3-venv
Ausführen in Ihrer lokalen Umgebung
Führen Sie diesen Befehl in Ihrem App-Ordner in einem Terminal oder einer Eingabeaufforderung aus:
func start
Führen Sie diesen Befehl in Ihrem App-Ordner in einem Terminal oder einer Eingabeaufforderung aus:
npm install npm start
Wenn der Functions-Host in Ihrem lokalen Projektordner gestartet wird, schreibt er Informationen zur Timer-gesteuerten Funktion in den Terminal-Output. Sie sollten sehen, dass Ihre Timer-Funktion gemäß dem in Ihrem Code definierten Zeitplan ausgeführt wird.
Der Standardzeitplan ist
*/30 * * * * *, der alle 30 Sekunden ausgeführt wird.Wenn Sie fertig sind, drücken Sie STRG+C im Terminalfenster, um den
func.exe-Hostprozess zu beenden.
- Führen Sie
deactivateaus, um die virtuelle Umgebung zu beenden.
Überprüfen des Codes (optional)
Sie können den Code überprüfen, der die Timertriggerfunktion definiert:
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!");
}
}
}
}
Hier können Sie das vollständige Vorlagenprojekt überprüfen.
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
});
Hier können Sie das vollständige Vorlagenprojekt überprüfen.
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!')
Hier können Sie das vollständige Vorlagenprojekt überprüfen.
Nachdem Sie Ihre Funktion lokal überprüft haben, ist es an der Zeit, sie in Azure zu veröffentlichen.
In Azure bereitstellen
Dieses Projekt ist so konfiguriert, dass der azd up Befehl verwendet wird, um Ihren Code in einer neuen Funktions-App in einem Flex-Verbrauchsplan in Azure bereitzustellen.
Tipp
Dieses Projekt enthält eine Reihe von Bicep-Dateien, die azd verwendet, um eine sichere Bereitstellung für einen Flex-Verbrauchsplan, der den bewährten Methoden folgt, zu erstellen.
Führen Sie diesen Befehl aus, damit
azddie erforderlichen Azure-Ressourcen in Azure erstellt und Ihr Codeprojekt in der neuen Funktions-App bereitstellt:azd upDer Stammordner enthält die
azure.yaml-Definitionsdatei, dieazderfordert.Wenn Sie noch nicht angemeldet sind, werden Sie aufgefordert, sich mit Ihrem Azure-Konto zu authentifizieren.
Wenn Sie dazu aufgefordert werden, stellen Sie die folgenden erforderlichen Bereitstellungsparameter bereit:
Parameter Description Azure-Abonnement Das Abonnement, in dem Ihre Ressourcen erstellt werden. Azure-Standort Die Azure-Region, in der die Ressourcengruppe erstellt werden soll, die die neuen Azure-Ressourcen enthält. Es werden nur Regionen angezeigt, die den Flex-Verbrauchsplan derzeit unterstützen. Der
azd up-Befehl verwendet Ihre Antwort auf diese Eingabeaufforderungen mit den Bicep-Konfigurationsdateien, um diese Bereitstellungsaufgaben auszuführen:Erstellen und Konfigurieren dieser erforderlichen Azure-Ressourcen (entspricht
azd provision):- Flex-Verbrauchsplan und Funktions-App
- Azure Storage (erforderlich) und Application Insights (empfohlen)
- Zugriffsrichtlinien und -rollen für Ihr Konto
- Dienst-zu-Dienst-Verbindungen mit verwalteten Identitäten (anstelle gespeicherter Verbindungszeichenfolgen)
- Virtuelles Netzwerk zum sicheren Ausführen der Funktions-App und der anderen Azure-Ressourcen
Packen und Bereitstellen des Codes im Bereitstellungscontainer (entspricht
azd deploy). Die App wird dann gestartet und im bereitgestellten Paket ausgeführt.
Nachdem der Befehl erfolgreich abgeschlossen wurde, werden Links zu den von Ihnen erstellten Ressourcen angezeigt.
Überprüfen der Bereitstellung
Nach Abschluss der Bereitstellung wird Ihre Timer-Trigger-Funktion in Azure automatisch entsprechend ihrem Zeitplan gestartet.
Wechseln Sie im Azure-Portal zu Ihrer neuen Funktions-App.
Wählen Sie im linken Menü "Protokolldatenstrom" aus, um die Funktionsausführungen in Echtzeit zu überwachen.
Sie sollten Protokolleinträge sehen, die die Ausführung Ihrer Timer-Trigger-Funktion gemäß dem Zeitplan zeigen.
Erneutes Bereitstellen Ihres Codes
Führen Sie den azd up Befehl so oft aus, wie Sie ihre Azure-Ressourcen bereitstellen und Codeupdates für Ihre Funktions-App bereitstellen müssen.
Hinweis
Bereitgestellte Codedateien werden immer vom neuesten Bereitstellungspaket überschrieben.
Ihre anfänglichen Antworten auf azd-Eingabeaufforderungen und alle von Ihnen generierten azd-Umgebungsvariablen werden lokal in Ihrer benannten Umgebung gespeichert. Verwenden Sie den azd env get-values-Befehl, um alle Variablen in Ihrer Umgebung zu überprüfen, die beim Erstellen von Azure-Ressourcen verwendet wurden.
Bereinigen von Ressourcen
Wenn Sie mit der Arbeit mit Ihrer Funktions-App und verwandten Ressourcen fertig sind, verwenden Sie diesen Befehl, um die Funktions-App und die zugehörigen Ressourcen aus Azure zu löschen und weitere Kosten zu vermeiden:
azd down --no-prompt
Hinweis
Die --no-prompt-Option weist azd an, Ihre Ressourcengruppe ohne Bestätigung von Ihnen zu löschen.
Dieser Befehl wirkt sich nicht auf Ihr lokales Codeprojekt aus.