Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a cikkben az Azure Developer CLI (azd) használatával hoz létre időzítő triggerfüggvényt egy ütemezett feladat Azure Functionsben való futtatásához. A kód helyi ellenőrzése után üzembe helyezi azt egy új kiszolgáló nélküli függvényalkalmazásra, amely egy Rugalmas Felhasználási tervben fut az Azure Functionsben.
A projektforrás a függvényalkalmazás és a kapcsolódó erőforrások létrehozására és a kód Azure-ban való üzembe helyezésére szolgál azd . Ez az üzembe helyezés a biztonságos és méretezhető Azure Functions-környezetek jelenlegi ajánlott eljárásait követi.
Alapértelmezés szerint a Flex Consumption csomag egy használatalapú fizetéses számlázási modellt követ, ami azt jelenti, hogy ezt a cikket elvégezheti, és csak néhány USD cent vagy annál kisebb költséggel jár az Azure-fiókjában.
Fontos
Bár az ütemezett feladatok futtatása minden nyelv esetében támogatott, ebben a rövid útmutatóban jelenleg csak a C#, a Python és a TypeScript esetében vannak példák. A rövid útmutató végrehajtásához válasszon egyet a cikk tetején található támogatott nyelvek közül.
Előfeltételek
- Node.js 22 vagy újabb
Python 3.11 vagy újabb
Egy Azure-fiók, aktív előfizetéssel. Hozzon létre egy fiókot ingyenesen.
A projekt inicializálása
azd init A parancs használatával helyi Azure Functions-kódprojektet hozhat létre egy sablonból.
A helyi terminálban vagy parancssorban futtassa ezt a
azd initparancsot egy üres mappában:azd init --template functions-quickstart-dotnet-azd-timer -e scheduled-dotnetEz a parancs lekéri a projektfájlokat a sablontárházból , és inicializálja a projektet az aktuális mappában. A
-ejelölő megadja az aktuális környezet nevét. Ebbenazdaz esetben a környezet egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és egynél több definiálható. A környezet nevét az Azure-ban létrehozott erőforráscsoport nevében is használja a rendszer.Futtassa ezt a parancsot az alkalmazásmappához való navigáláshoz:
cd srcHozzon létre egy local.settings.json nevű fájlt a
srcJSON-adatokat tartalmazó mappában:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "TIMER_SCHEDULE": "*/30 * * * * *" } }Ez a fájl helyi futtatáskor szükséges.
A helyi terminálban vagy parancssorban futtassa ezt a
azd initparancsot egy üres mappában:azd init --template functions-quickstart-typescript-azd-timer -e scheduled-tsEz a parancs lekéri a projektfájlokat a sablontárházból , és inicializálja a projektet az aktuális mappában. A
-ejelölő megadja az aktuális környezet nevét. Ebbenazdaz esetben a környezet egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és egynél több definiálható. A környezet nevét az Azure-ban létrehozott erőforráscsoport nevében is használja a rendszer.Hozzon létre egy local.settings.json nevű fájlt a
srcJSON-adatokat tartalmazó mappában:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "TIMER_SCHEDULE": "*/30 * * * * *" } }Ez a fájl helyi futtatáskor szükséges.
A helyi terminálban vagy parancssorban futtassa ezt a
azd initparancsot egy üres mappában:azd init --template functions-quickstart-python-azd-timer -e scheduled-pyEz a parancs lekéri a projektfájlokat a sablontárházból , és inicializálja a projektet az aktuális mappában. A
-ejelölő megadja az aktuális környezet nevét. Ebbenazdaz esetben a környezet egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és egynél több definiálható. A környezet nevét az Azure-ban létrehozott erőforráscsoport nevében is használja a rendszer.Hozzon létre egy local.settings.json nevű fájlt a
srcJSON-adatokat tartalmazó mappában:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "TIMER_SCHEDULE": "*/30 * * * * *" } }Ez a fájl helyi futtatáskor szükséges.
Virtuális környezet létrehozása és aktiválása
A gyökérmappában futtassa ezeket a parancsokat a következő nevű .venvvirtuális környezet létrehozásához és aktiválásához:
python3 -m venv .venv
source .venv/bin/activate
Ha a Python nem telepíti a venv-csomagot a Linux-disztribúcióra, futtassa a következő parancsot:
sudo apt-get install python3-venv
Futtatás a helyi környezetben
Futtassa ezt a parancsot az alkalmazásmappából egy terminálban vagy parancssorban:
func start
Futtassa ezt a parancsot az alkalmazásmappából egy terminálban vagy parancssorban:
npm install npm start
Amikor a Functions-gazdagép elindul a helyi projektmappában, adatokat ír az időzítő által aktivált függvényről a terminál kimenetére. Az időzítő által aktivált függvénynek a kódban meghatározott ütemezés alapján kell futnia.
Az alapértelmezett ütemezés az
*/30 * * * * *, amely 30 másodpercenként fut.Ha elkészült, a gazdafolyamat leállításához nyomja le a Ctrl+C billentyűkombinációt a
func.exeterminálablakban.
- Futtassa
deactivatea virtuális környezet leállítását.
A kód áttekintése (nem kötelező)
Áttekintheti az Időzítő eseményindító függvényt meghatározó kódot:
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!");
}
}
}
}
A teljes sablonprojektet itt tekintheti át.
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
});
A teljes sablonprojektet itt tekintheti át.
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!')
A teljes sablonprojektet itt tekintheti át.
Miután helyben ellenőrizte a függvényt, ideje közzétenni az Azure-ban.
Telepítés az Azure-ra
Ez a projekt úgy van beállítva, hogy a azd up parancs használatával helyezze üzembe a kódot egy új Function App-re egy Azure Rugalmas Felhasználási tervben.
Jótanács
Ez a projekt olyan Bicep-fájlokat tartalmaz, amelyek azd az ajánlott eljárásokat követve biztonságos üzembe helyezést hoznak létre egy Rugalmas használatú csomagban.
Futtassa ezt a parancsot, hogy
azdlétrehozza a szükséges Azure-erőforrásokat az Azure-ban, és üzembe helyezze a kódprojektet az új függvényalkalmazásban:azd upA gyökérmappa tartalmazza a
azure.yamlszükséges definíciófájltazd.Ha még nem jelentkezett be, a rendszer arra kéri, hogy hitelesítse az Azure-fiókjával.
Amikor a rendszer kéri, adja meg a szükséges üzembehelyezési paramétereket:
Paraméter Description Azure-előfizetés Előfizetés, amelyben az erőforrások létrejönnek. Azure-lokáció Azure-régió, amelyben létre kell hozni az új Azure-erőforrásokat tartalmazó erőforráscsoportot. Csak azok a régiók jelennek meg, amelyek jelenleg támogatják a Rugalmas felhasználás csomagot. A
azd upparancs a Bicep konfigurációs fájljaival a következő kérdésekre adott választ használja az üzembehelyezési feladatok elvégzéséhez:Hozza létre és konfigurálja ezeket a szükséges Azure-erőforrásokat (a következőnek felel meg
azd provision):- Rugalmas kihasználtságú csomag és függvényalkalmazás
- Azure Storage (kötelező) és Application Insights (ajánlott)
- Hozzáférési szabályzatok és szerepkörök a fiókhoz
- Szolgáltatásközi kapcsolatok felügyelt identitásokkal (tárolt kapcsolati sztring helyett)
- Virtuális hálózat a függvényalkalmazás és a többi Azure-erőforrás biztonságos futtatásához
Csomagolja és telepítse a kódot az üzembehelyezési tárolóba (ez egyenértékű a következőval
azd deploy). Az alkalmazás ezután elindul, és az üzembe helyezett csomagban fut.
A parancs sikeres végrehajtása után megjelennek a létrehozott erőforrásokra mutató hivatkozások.
Az üzembe helyezés ellenőrzése
Az üzembe helyezés befejezése után az Időzítő eseményindító függvénye az ütemezése alapján automatikusan elindul az Azure-ban.
Az Azure Portalon nyissa meg az új függvényalkalmazást.
Válassza a Naplófolyam lehetőséget a függvényvégrehajtások valós idejű monitorozásához a bal oldali menüben.
Olyan naplóbejegyzéseket kell látnia, amelyek azt mutatják, hogy az időzítő triggerfüggvénye az ütemezés szerint fut.
A kód ismételt üzembe helyezése
Futtassa a azd up parancsot annyiszor, amennyi szükséges az Azure-erőforrások kiépítéséhez és a kódfrissítések üzembe helyezéséhez a függvényalkalmazásban.
Megjegyzés:
Az üzembe helyezett kódfájlokat mindig felülírja a legújabb üzembehelyezési csomag.
A kérésekre adott kezdeti válaszokat azd és az általuk azd létrehozott környezeti változókat a rendszer helyileg tárolja a nevesített környezetben.
azd env get-values A paranccsal áttekintheti a környezet összes olyan változóját, amelyet az Azure-erőforrások létrehozásakor használtak.
Erőforrások tisztítása
Ha végzett a függvényalkalmazással és a kapcsolódó erőforrásokkal, ezzel a paranccsal törölheti a függvényalkalmazást és annak kapcsolódó erőforrásait az Azure-ból, és elkerülheti a további költségek felmerülését:
azd down --no-prompt
Megjegyzés:
A --no-prompt beállítás arra utasítja azd , hogy az erőforráscsoportot anélkül törölje, hogy ön megerősítést kap.
Ez a parancs nincs hatással a helyi kódprojektre.