Jak zakázat funkce v Azure Functions

Tento článek vysvětluje, jak zakázat funkci v Azure Functions. Pokud chcete funkci zakázat , znamená to, že modul runtime ignoruje automatickou aktivační událost definovanou pro funkci. To vám umožní zabránit spuštění konkrétní funkce, aniž by se zastavila celá aplikace funkcí.

Doporučený způsob zakázání funkce je s nastavením aplikace ve formátu AzureWebJobs.<FUNCTION_NAME>.Disabled nastaveném na true. Toto nastavení aplikace můžete vytvořit a upravit několika způsoby, včetně pomocí Azure CLI a na kartě Přehled vaší funkce v Azure Portal.

Vypnutí funkce

Na stránce Přehled funkce použijte tlačítka Povolit a Zakázat. Tato tlačítka fungují změnou hodnoty AzureWebJobs.<FUNCTION_NAME>.Disabled nastavení aplikace. Toto nastavení specifické pro funkci se vytvoří při prvním zakázání.

Function state switch

I když publikujete aplikaci funkcí z místního projektu, můžete funkce v aplikaci funkcí zakázat pomocí portálu.

Poznámka

Funkce integrovaného testování portálu Disabled ignoruje toto nastavení. To znamená, že zakázaná funkce se pořád spouští při spuštění z okna Test na portálu.

Funkce v slotu

Ve výchozím nastavení platí i pro aplikace spuštěné v slotech nasazení. Nastavení aplikace používané slotem ale můžete přepsat nastavením aplikace specifické pro slot. Můžete například chtít, aby byla funkce aktivní v produkčním prostředí, ale ne během testování nasazení, například aktivovaná funkce časovače.

Zakázání funkce pouze v přípravném slotu:

Přejděte do instance slotu aplikace funkcí výběrem slotů nasazení v části Nasazení, výběrem slotu a výběrem funkcí v instanci slotu. Zvolte funkci a pak na stránce Přehled funkce použijte tlačítka Povolit a Zakázat. Tato tlačítka fungují změnou hodnoty AzureWebJobs.<FUNCTION_NAME>.Disabled nastavení aplikace. Toto nastavení specifické pro funkci se vytvoří při prvním zakázání.

Můžete také přímo přidat nastavení aplikace s názvem AzureWebJobs.<FUNCTION_NAME>.Disabled hodnota true v konfiguraci instance slotu. Když přidáte nastavení aplikace specifické pro slot, nezapomeňte zaškrtnout políčko Nastavení slotu nasazení . Tím se zachová hodnota nastavení s slotem během prohození.

Další informace najdete v tématu Azure Functions Sloty nasazení.

local.settings.json

Funkce se dají zakázat stejným způsobem jako při místním spuštění. Pokud chcete funkci s názvem HttpExamplezakázat, přidejte položku do kolekce Values v souboru local.settings.json následujícím způsobem:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true", 
    "AzureWebJobs.HttpExample.Disabled": true
  }
}

Jiné metody

I když se metoda nastavení aplikace doporučuje pro všechny jazyky a všechny verze modulu runtime, existuje několik dalších způsobů, jak zakázat funkce. Tyto metody, které se liší podle verze jazyka a modulu runtime, se udržují kvůli zpětné kompatibilitě.

Knihovny tříd jazyka C#

Ve funkci knihovny tříd můžete také použít Disable atribut, abyste zabránili aktivaci funkce. Tento atribut umožňuje přizpůsobit název nastavení použitého k zakázání funkce. Použijte verzi atributu, která umožňuje definovat parametr konstruktoru, který odkazuje na nastavení logické aplikace, jak je znázorněno v následujícím příkladu:

public static class QueueFunctions
{
    [Disable("MY_TIMER_DISABLED")]
    [FunctionName("QueueTrigger")]
    public static void QueueTrigger(
        [QueueTrigger("myqueue-items")] string myQueueItem, 
        TraceWriter log)
    {
        log.Info($"C# function processed: {myQueueItem}");
    }
}

Tato metoda umožňuje povolit a zakázat funkci změnou nastavení aplikace bez opětovného dokončování nebo opětovného nasazení. Změna nastavení aplikace způsobí restartování aplikace funkcí, takže se okamžitě rozpozná změna zakázaného stavu.

Existuje také konstruktor pro parametr, který nepřijímá řetězec pro název nastavení. Tato verze atributu se nedoporučuje. Pokud používáte tuto verzi, musíte projekt znovu zkompilovat a znovu nasadit, aby se změnil stav zakázané funkce.

Functions 1.x – skriptovací jazyky

Ve verzi 1.x můžete také použít disabled vlastnost souboru function.json k tomu, aby modul runtime neaktivoval funkci. Tato metoda funguje jenom pro skriptovací jazyky, jako jsou skripty jazyka C# a JavaScript. Vlastnost disabled lze nastavit na true nebo na název nastavení aplikace:

{
    "bindings": [
        {
            "type": "queueTrigger",
            "direction": "in",
            "name": "myQueueItem",
            "queueName": "myqueue-items",
            "connection":"MyStorageConnectionAppSetting"
        }
    ],
    "disabled": true
}

nebo

    "bindings": [
        ...
    ],
    "disabled": "IS_DISABLED"

V druhém příkladu je funkce zakázaná, pokud existuje nastavení aplikace s názvem IS_DISABLED a je nastaveno na true nebo 1.

Důležité

Portál používá nastavení aplikace k zakázání funkcí v1.x. Když nastavení aplikace koliduje se souborem function.json, může dojít k chybě. Vlastnost byste měli odebrat disabled ze souboru function.json, abyste zabránili chybám.

Požadavky

Při zakázání funkcí mějte na paměti následující aspekty:

  • Když zakážete funkci aktivovanou protokolem HTTP pomocí metod popsaných v tomto článku, koncový bod může být stále přístupný při spuštění na místním počítači.

  • V tuto chvíli se názvy funkcí, které obsahují spojovník (-) při spouštění v plánu Linuxu, nedají zakázat. Pokud potřebujete zakázat funkce při spuštění v plánu Linuxu, nepoužívejte ve svých názvech funkcí spojovníky.

Další kroky

Tento článek se týká zakázání automatických triggerů. Další informace o triggerech najdete v tématu Triggery a vazby.