Come disabilitare le funzioni in Funzioni di Azure

Questo articolo illustra come disabilitare una funzione in Funzioni di Azure. Disabilitare una funzione significa fare in modo che il runtime ignori il trigger automatico definito per la funzione. Ciò consente di impedire l'esecuzione di una funzione specifica senza arrestare l'intera app per le funzioni.

Il modo consigliato per disabilitare una funzione è con un'impostazione dell'app nel formato AzureWebJobs.<FUNCTION_NAME>.Disabled impostato su true. È possibile creare e modificare questa impostazione dell'applicazione in diversi modi, tra cui usando l'interfaccia della riga di comando di Azure e dalla scheda Panoramica della funzione nel portale di Azure.

Disabilitare una funzione

Usare i pulsanti Abilita e Disabilita nella pagina Panoramica della funzione. Questi pulsanti funzionano modificando il valore dell'impostazione dell'app AzureWebJobs.<FUNCTION_NAME>.Disabled . Questa impostazione specifica della funzione viene creata la prima volta che è disabilitata.

Function state switch

Anche quando si pubblica l'app per le funzioni da un progetto locale, è comunque possibile usare il portale per disabilitare le funzioni nell'app per le funzioni.

Nota

La funzionalità di test integrata nel portale ignora l'impostazione Disabled. Ciò significa che una funzione disabilitata viene comunque eseguita quando viene avviata dalla finestra Test nel portale.

Funzioni in uno slot

Per impostazione predefinita, le impostazioni dell'app si applicano anche alle app in esecuzione negli slot di distribuzione. È tuttavia possibile eseguire l'override dell'impostazione dell'app usata dallo slot impostando un'impostazione dell'app specifica dello slot. Ad esempio, è possibile che una funzione sia attiva nell'ambiente di produzione, ma non durante i test di distribuzione, ad esempio una funzione attivata dal timer.

Per disabilitare una funzione solo nello slot di staging:

Passare all'istanza dello slot dell'app per le funzioni selezionando Slot di distribuzione in Distribuzione, scegliendo lo slot e selezionando Funzioni nell'istanza dello slot. Scegliere la funzione, quindi usare i pulsanti Abilita e Disabilita nella pagina Panoramica della funzione. Questi pulsanti funzionano modificando il valore dell'impostazione dell'app AzureWebJobs.<FUNCTION_NAME>.Disabled . Questa impostazione specifica della funzione viene creata la prima volta che è disabilitata.

È anche possibile aggiungere direttamente l'impostazione dell'app denominata AzureWebJobs.<FUNCTION_NAME>.Disabled con il valore di true nella configurazione per l'istanza dello slot. Quando si aggiunge un'impostazione di app specifica dello slot, assicurarsi di selezionare la casella Impostazioni slot di distribuzione . Questo mantiene il valore di impostazione con lo slot durante gli scambi.

Per altre informazioni, vedere Funzioni di Azure Slot di distribuzione.

local.settings.json

Le funzioni possono essere disabilitate nello stesso modo durante l'esecuzione in locale. Per disabilitare una funzione denominata HttpExample, aggiungere una voce all'insieme Values nel file local.settings.json, come indicato di seguito:

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

Altri metodi

Sebbene sia consigliabile usare l'impostazione dell'applicazione per tutti i linguaggi e per tutte le versioni di runtime, è possibile disabilitare le funzioni in diversi altri modi. Questi metodi, che variano in base al linguaggio e alla versione di runtime, vengono mantenuti per compatibilità con le versioni precedenti.

Libreria di classi C#

In una funzione di libreria di classi, è anche possibile usare l'attributo Disable per impedire che la funzione venga attivata. Questo attributo consente di personalizzare il nome dell'impostazione usata per disabilitare la funzione. Usare la versione dell'attributo che consente di definire un parametro del costruttore che fa riferimento a un'impostazione dell'app booleana, come illustrato nell'esempio seguente:

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}");
    }
}

Questo metodo consente di abilitare e disabilitare la funzione modificando l'impostazione dell'app, senza ricompilare o ridistribuire il progetto. Se si modifica un'impostazione, l'app per le funzioni viene riavviata e la modifica dello stato disabilitato viene rilevata immediatamente.

Esiste anche un costruttore per il parametro che non accetta una stringa per il nome dell'impostazione. Questa versione dell'attributo non è consigliata. Se si usa questa versione, è necessario ricompilare e ridistribuire il progetto per modificare lo stato disabilitato della funzione.

Funzioni 1.x: linguaggi di scripting

Nella versione 1.x è anche possibile usare la proprietà disabled del file function.json per indicare al runtime di non attivare una funzione. Questo metodo funziona solo per i linguaggi di scripting, ad esempio C# e JavaScript. La proprietà disabled può essere impostata su true o sul nome di un'impostazione dell'app:

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

o

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

Nel secondo esempio la funzione viene disabilitata se è presente un'impostazione dell'app denominata IS_DISABLED che è impostata su true o 1.

Importante

Il portale usa le impostazioni dell'applicazione per disabilitare le funzioni v1.x. Quando l'impostazione di un'applicazione è in conflitto con il file function.json, è possibile che si verifichi un errore. Per evitare errori, è necessario rimuovere la proprietà disabled dal file function.json.

Considerazioni

Tenere presenti le considerazioni seguenti quando si disabilitano le funzioni:

  • Quando si disabilita una funzione attivata tramite HTTP usando i metodi descritti in questo articolo, l'endpoint può ancora essere accessibile quando viene eseguito nel computer locale.

  • A questo punto, i nomi delle funzioni che contengono un trattino (-) non possono essere disabilitati durante l'esecuzione nel piano Linux. Se è necessario disabilitare le funzioni durante l'esecuzione nel piano Linux, non usare trattini nei nomi delle funzioni.

Passaggi successivi

Questo articolo contiene informazioni sulla disabilitazione dei trigger automatici. Per altre informazioni, vedere Trigger e associazioni.