Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku pomocí Azure Developer CLI (azd) vytvoříte funkci triggeru časovače pro spuštění naplánované úlohy ve službě Azure Functions. Po místním ověření kódu ho nasadíte do nové aplikace funkcí bez serveru, kterou vytvoříte v plánu Flex Consumption ve službě Azure Functions.
Zdroj projektu používá azd k vytvoření aplikace funkcí a souvisejících prostředků a k nasazení kódu do Azure. Toto nasazení se řídí aktuálními osvědčenými postupy pro zabezpečená a škálovatelná nasazení Azure Functions.
Ve výchozím nastavení se plán Flex Consumption řídí fakturačním modelem plaťte za to, co používáte, což znamená, že tento článek můžete dokončit a v účtu Azure se vám budou účtovat jen malé náklady na několik centů USD nebo méně.
Důležité
Zatímco spouštění naplánovaných úloh je podporováno pro všechny jazyky, tento scénář rychlého startu aktuálně obsahuje pouze příklady pro C#, Python a TypeScript. K dokončení tohoto rychlého startu vyberte jeden z těchto podporovaných jazyků v horní části článku.
Požadavky
- Node.js 22 nebo vyšší
Python 3.11 nebo novější
Účet Azure s aktivním předplatným. Vytvořte si bezplatný účet.
Inicializace projektu
azd init Pomocí příkazu vytvořte místní projekt kódu Azure Functions ze šablony.
V místním terminálu nebo příkazovém řádku spusťte tento
azd initpříkaz v prázdné složce:azd init --template functions-quickstart-dotnet-azd-timer -e scheduled-dotnetTento příkaz načte soubory projektu z úložiště šablony a inicializuje projekt v aktuální složce. Příznak
-enastaví název aktuálního prostředí. Vazdprostředí udržuje jedinečný kontext nasazení pro vaši aplikaci a můžete definovat více než jeden. Název prostředí se používá také v názvu skupiny prostředků, kterou vytvoříte v Azure.Spuštěním tohoto příkazu přejděte do složky aplikace:
cd srcVe složce, která obsahuje tato data JSON, vytvořte soubor s názvem local.settings.json
src:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "TIMER_SCHEDULE": "*/30 * * * * *" } }Tento soubor se vyžaduje při místním spuštění.
V místním terminálu nebo příkazovém řádku spusťte tento
azd initpříkaz v prázdné složce:azd init --template functions-quickstart-typescript-azd-timer -e scheduled-tsTento příkaz načte soubory projektu z úložiště šablony a inicializuje projekt v aktuální složce. Příznak
-enastaví název aktuálního prostředí. Vazdprostředí udržuje jedinečný kontext nasazení pro vaši aplikaci a můžete definovat více než jeden. Název prostředí se používá také v názvu skupiny prostředků, kterou vytvoříte v Azure.Ve složce, která obsahuje tato data JSON, vytvořte soubor s názvem local.settings.json
src:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "TIMER_SCHEDULE": "*/30 * * * * *" } }Tento soubor se vyžaduje při místním spuštění.
V místním terminálu nebo příkazovém řádku spusťte tento
azd initpříkaz v prázdné složce:azd init --template functions-quickstart-python-azd-timer -e scheduled-pyTento příkaz načte soubory projektu z úložiště šablony a inicializuje projekt v aktuální složce. Příznak
-enastaví název aktuálního prostředí. Vazdprostředí udržuje jedinečný kontext nasazení pro vaši aplikaci a můžete definovat více než jeden. Název prostředí se používá také v názvu skupiny prostředků, kterou vytvoříte v Azure.Ve složce, která obsahuje tato data JSON, vytvořte soubor s názvem local.settings.json
src:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "TIMER_SCHEDULE": "*/30 * * * * *" } }Tento soubor se vyžaduje při místním spuštění.
Vytvoření a aktivace virtuálního prostředí
Spuštěním těchto příkazů v kořenové složce vytvořte a aktivujte virtuální prostředí s názvem .venv:
python3 -m venv .venv
source .venv/bin/activate
Pokud Python neinstaluje balíček venv do distribuce Linuxu, spusťte následující příkaz:
sudo apt-get install python3-venv
Spuštění v místním prostředí
Spusťte tento příkaz ze složky aplikace v terminálu nebo na příkazovém řádku:
func start
Spusťte tento příkaz ze složky aplikace v terminálu nebo na příkazovém řádku:
npm install npm start
Když se hostitel Functions spustí ve složce místního projektu, zapíše do výstupu terminálu informace o funkci aktivované časovačem. Měli byste vidět, jak se vaše funkce spuštěná časovačem provádí podle plánu definovaného ve vašem kódu.
Výchozí plán je
*/30 * * * * *, který se spouští každých 30 sekund.Až budete hotovi, ukončete proces hostitele stisknutím ctrl+C v okně
func.exeterminálu.
- Spuštěním
deactivateukončete virtuální prostředí.
Kontrola kódu (volitelné)
Můžete si projít kód, který definuje funkci triggeru časovače:
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!");
}
}
}
}
Tady si můžete projít kompletní projekt šablony.
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
});
Tady si můžete projít kompletní projekt šablony.
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!')
Tady si můžete projít kompletní projekt šablony.
Jakmile funkci ověříte místně, je čas ji publikovat do Azure.
Nasazení do Azure
Tento projekt je nakonfigurován tak, aby pomocí příkazu azd up nasadil váš kód do nové funkční aplikace v plánu Flex Consumption v Azure.
Návod
Tento projekt zahrnuje sadu souborů Bicep, které používají k vytvoření zabezpečeného nasazení do plánu Flex Consumption, který azd dodržuje osvědčené postupy.
Spuštěním tohoto příkazu vytvořte
azdpožadované prostředky Azure v Azure a nasaďte projekt kódu do nové aplikace funkcí:azd upKořenová složka obsahuje
azure.yamldefiniční soubor vyžadovanýazd.Pokud ještě nejste přihlášení, zobrazí se výzva k ověření pomocí účtu Azure.
Po zobrazení výzvy zadejte tyto požadované parametry nasazení:
Parameter Description Předplatné Azure Předplatné, ve kterém se vaše prostředky vytvářejí. Umístění Azure Oblast Azure, ve které se má vytvořit skupina prostředků, která obsahuje nové prostředky Azure. Zobrazí se pouze oblasti, které aktuálně podporují plán Flex Consumption. Příkaz
azd uppoužije k dokončení těchto úloh nasazení odpověď na tyto výzvy s konfiguračními soubory Bicep:Vytvořte a nakonfigurujte tyto požadované prostředky Azure (ekvivalentní
azd provision):- Plán Flex Consumption a aplikace funkcí
- Azure Storage (povinné) a Application Insights (doporučeno)
- Zásady přístupu a role pro váš účet
- Připojení mezi službami pomocí spravovaných identit (místo uložených připojovací řetězec)
- Virtuální síť pro bezpečné spuštění aplikace funkcí i dalších prostředků Azure
Zabalte a nasaďte kód do kontejneru nasazení (ekvivalentní).
azd deployAplikace se pak spustí a spustí v nasazeném balíčku.
Po úspěšném dokončení příkazu se zobrazí odkazy na prostředky, které jste vytvořili.
Ověření nasazení
Po dokončení nasazení se funkce časovačového spouštění automaticky spustí v Azure podle svého plánu.
Na webu Azure Portal přejděte do nové aplikace funkcí.
V levém menu vyberte Protokol streamu a sledujte spouštění funkcí v reálném čase.
Měly by se zobrazit položky protokolu, které zobrazují, jak je funkce časovače spouštěna podle stanoveného harmonogramu.
Opětovné nasazení kódu
azd up Spusťte příkaz tolikrát, kolikrát potřebujete zřizovat prostředky Azure a nasazovat aktualizace kódu do aplikace funkcí.
Poznámka:
Nasazené soubory kódu se vždy přepíšou nejnovějším balíčkem pro nasazení.
Vaše počáteční odpovědi na azd výzvy a všechny proměnné prostředí vygenerované azd pomocí se ukládají místně ve vašem pojmenovaném prostředí.
azd env get-values Pomocí příkazu zkontrolujte všechny proměnné ve vašem prostředí, které se použily při vytváření prostředků Azure.
Vyčistěte zdroje
Po dokončení práce s aplikací funkcí a souvisejícími prostředky pomocí tohoto příkazu odstraňte aplikaci funkcí a související prostředky z Azure a vyhněte se dalším nákladům:
azd down --no-prompt
Poznámka:
Tato --no-prompt možnost dává azd pokyn k odstranění skupiny prostředků bez potvrzení od vás.
Tento příkaz nemá vliv na místní projekt kódu.