Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Dans cet article, vous utilisez Azure Developer CLI (azd) pour créer une fonction de déclencheur du minuteur pour exécuter une tâche planifiée dans Azure Functions. Après avoir vérifié le code localement, vous le déployez sur une nouvelle application de fonction serverless que vous créez en cours d’exécution dans un plan Flex Consumption dans Azure Functions.
La source du projet utilise azd pour créer l’application de fonction et les ressources associées et déployer votre code sur Azure. Ce déploiement suit les bonnes pratiques actuelles pour les déploiements Azure Functions sécurisés et scalables.
Par défaut, le plan Flex Consumption suit un modèle de facturation de paiement à l’utilisation , ce qui signifie que vous pouvez suivre cet article et que vous n’avez qu’un petit coût de quelques cents USD ou moins dans votre compte Azure.
Important
Bien que l’exécution de tâches planifiées soit prise en charge pour tous les langages, ce scénario de démarrage rapide ne contient actuellement que des exemples pour C#, Python et TypeScript. Pour suivre ce guide de démarrage rapide, sélectionnez l’une de ces langues prises en charge en haut de l’article.
Prerequisites
Python 3.11 ou version ultérieure
Un compte Azure avec un abonnement actif. Créez un compte gratuitement.
Initialiser le projet
Utilisez la azd init commande pour créer un projet de code Azure Functions local à partir d’un modèle.
Dans votre terminal local ou à l’invite de commandes, exécutez cette commande
azd initdans un dossier vide :azd init --template functions-quickstart-dotnet-azd-timer -e scheduled-dotnetCette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier actif. L’indicateur
-edéfinit un nom pour l’environnement actuel. Dansazd, l’environnement gère un contexte de déploiement unique pour votre application et vous pouvez en définir plusieurs. Le nom de l’environnement est également utilisé dans le nom du groupe de ressources que vous créez dans Azure.Exécutez cette commande pour accéder au dossier de l’application :
cd srcCréez un fichier nommé local.settings.json dans le
srcdossier qui contient ces données JSON :{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "TIMER_SCHEDULE": "*/30 * * * * *" } }Ce fichier est requis lors d’une exécution locale.
Dans votre terminal local ou à l’invite de commandes, exécutez cette commande
azd initdans un dossier vide :azd init --template functions-quickstart-typescript-azd-timer -e scheduled-tsCette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier actif. L’indicateur
-edéfinit un nom pour l’environnement actuel. Dansazd, l’environnement gère un contexte de déploiement unique pour votre application et vous pouvez en définir plusieurs. Le nom de l’environnement est également utilisé dans le nom du groupe de ressources que vous créez dans Azure.Créez un fichier nommé local.settings.json dans le
srcdossier qui contient ces données JSON :{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "TIMER_SCHEDULE": "*/30 * * * * *" } }Ce fichier est requis lors d’une exécution locale.
Dans votre terminal local ou à l’invite de commandes, exécutez cette commande
azd initdans un dossier vide :azd init --template functions-quickstart-python-azd-timer -e scheduled-pyCette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier actif. L’indicateur
-edéfinit un nom pour l’environnement actuel. Dansazd, l’environnement gère un contexte de déploiement unique pour votre application et vous pouvez en définir plusieurs. Le nom de l’environnement est également utilisé dans le nom du groupe de ressources que vous créez dans Azure.Créez un fichier nommé local.settings.json dans le
srcdossier qui contient ces données JSON :{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "TIMER_SCHEDULE": "*/30 * * * * *" } }Ce fichier est requis lors d’une exécution locale.
Créer et activer un environnement virtuel
Dans le dossier racine, exécutez ces commandes pour créer et activer un environnement virtuel nommé .venv :
python3 -m venv .venv
source .venv/bin/activate
Si Python n’installe pas le package venv sur votre distribution Linux, exécutez la commande suivante :
sudo apt-get install python3-venv
Exécuter dans votre environnement local
Exécutez cette commande à partir du dossier de votre application dans un terminal ou à l’invite de commandes :
func start
Exécutez cette commande à partir du dossier de votre application dans un terminal ou à l’invite de commandes :
npm install npm start
Lorsque l’hôte Functions démarre dans votre dossier de projet local, il écrit les informations sur votre fonction de déclencheur Timer dans la sortie du terminal. Vous devez voir votre fonction déclenchée par minuteur s’exécuter en fonction de la planification définie dans votre code.
La planification par défaut est
*/30 * * * * *, qui s’exécute toutes les 30 secondes.Lorsque vous avez terminé, appuyez sur Ctrl + C dans la fenêtre du terminal pour arrêter le processus hôte
func.exe.
- Exécutez
deactivatepour arrêter l’environnement virtuel.
Examiner le code (facultatif)
Vous pouvez consulter le code qui définit la fonction de déclencheur du minuteur :
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!");
}
}
}
}
Vous pouvez consulter le projet de modèle complet ici.
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
});
Vous pouvez consulter le projet de modèle complet ici.
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!')
Vous pouvez consulter le projet de modèle complet ici.
Après avoir vérifié votre fonction localement, il est temps de le publier sur Azure.
Déployer sur Azure
Ce projet est configuré pour utiliser la azd up commande pour déployer votre code sur une nouvelle application de fonction dans un plan Flex Consumption dans Azure.
Conseil / Astuce
Ce projet comprend un ensemble de fichiers Bicep qu’utilise azd pour créer un déploiement sécurisé dans un plan Consommation flexible qui suit les bonnes pratiques.
Exécutez cette commande pour qu’
azdcrée les ressources Azure requises dans Azure et déployer votre projet de code dans la nouvelle application de fonction :azd upLe dossier racine contient le fichier de définition
azure.yamlexigé parazd.Si vous n’êtes pas déjà connecté, vous êtes invité à vous authentifier auprès de votre compte Azure.
Lorsque vous y êtes invité, fournissez ces paramètres de déploiement requis :
Paramètre Descriptif Abonnement Azure Abonnement dans lequel vos ressources sont créées. Emplacement Azure Région Azure dans laquelle créer le groupe de ressources qui contient les nouvelles ressources Azure. Seules sont montrées les régions qui prennent actuellement en charge le plan Consommation flexible. La commande
azd uputilise votre réponse à ces invites avec les fichiers de configuration Bicep pour effectuer ces tâches de déploiement :Créez et configurez ces ressources Azure requises (équivalentes à
azd provision) :- Plan Consommation flexible et application de fonction
- Stockage Azure (obligatoire) et Application Insights (recommandé)
- Stratégies d’accès et rôles pour votre compte
- Connexions de service à service avec des identités managées (au lieu de chaînes de connexion stockées)
- Réseau virtuel pour exécuter de façon sécurisée l’application de fonction et les autres ressources Azure
Empaquetez et déployez votre code sur le conteneur de déploiement (équivalent à
azd deploy). L’application est ensuite démarrée et s’exécute dans le package déployé.
Une fois la commande terminée, vous voyez des liens vers les ressources que vous avez créées.
Vérifier le déploiement
Une fois le déploiement terminé, votre fonction de déclencheur Timer s’exécute automatiquement dans Azure selon sa planification.
Dans le portail Azure, accédez à votre nouvelle application de fonction.
Sélectionnez Flux de journal dans le menu de gauche pour surveiller vos exécutions de fonction en temps réel.
Vous devriez voir les entrées du journal montrant que la fonction de déclencheur Timer s’exécute selon sa planification.
Redéployer votre code
Exécutez la azd up commande autant de fois que vous devez provisionner vos ressources Azure et déployer des mises à jour de code sur votre application de fonction.
Note
Les fichiers de code déployés sont toujours remplacés par le dernier package de déploiement.
Vos réponses initiales aux invites d’azd et toutes les variables d’environnement générées par azd sont stockées localement dans votre environnement nommé. Utilisez la commande azd env get-values pour passer en revue toutes les variables de votre environnement qui ont été utilisées lors de la création de ressources Azure.
Nettoyer les ressources
Lorsque vous avez terminé d’utiliser votre application de fonction et vos ressources associées, utilisez cette commande pour supprimer l’application de fonction et ses ressources associées d’Azure et éviter d’entraîner d’autres coûts :
azd down --no-prompt
Note
L’option --no-prompt indique à azd de supprimer votre groupe de ressources sans confirmation de votre part.
Cette commande n’affecte pas votre projet de code local.