Condividi tramite


Eseguire la migrazione delle app del piano di consumo al piano di consumo Flex.

Questo articolo illustra come eseguire la migrazione delle app per le funzioni esistenti dal piano Consumo al piano Consumo Flessibile. Per la maggior parte delle app, questa migrazione è semplice e il codice non deve cambiare.

Importante

Il supporto per l'hosting di app per le funzioni su Linux in un piano a consumo scadrà il 30 settembre 2028. A partire da oggi, i miglioramenti delle funzionalità e del linguaggio non vengono apportati al piano a consumo di Linux. Seguire questo articolo per eseguire la migrazione delle app del piano a consumo in modo che vengano invece eseguite nel piano a consumo Flex. Per ulteriori informazioni sulle date di fine supporto del piano di consumo di Linux, vedere Piano di consumo di Funzioni di Azure (legacy).

Metodi di migrazione

Questo articolo supporta la migrazione di un'app per funzioni Linux in un piano di consumo flessibile, per le app Linux e Windows. Funzioni offre diversi modi per semplificare la maggior parte dei passaggi di migrazione, in particolare per le app Linux.

La tabella seguente illustra quali metodi di migrazione sono disponibili per ogni sistema operativo e sono trattati in questo articolo.

Metodo di migrazione Descrizione Linux Windows
Competenze di Azure su GitHub Copilot. Lascia che Copilot ti guidi e automatizzi la migrazione in modo interattivo (consigliato per Linux).
Comando di migrazione CLI Usare az functionapp flex-migration per automatizzare la migrazione.
Comandi standard dell'interfaccia della riga di comando Migrazione graduale utilizzando i comandi interfaccia della riga di comando di Azure.
portale Azure Migrazione graduale nel portale di Azure.
Infrastruttura come codice Creare codice di migrazione ripetibile usando modelli arm, Bicep file o Terraform.

✅ Supportato e in primo piano | ➖ Supportato, non in primo piano | ❌ Non supportato

Per visualizzare le istruzioni appropriate per l'app, selezionare il sistema operativo nella parte superiore dell'articolo.

Cosa aspettarsi

I passaggi specifici necessari per eseguire la migrazione dell'app piano a consumo dipendono sia dal sistema operativo che dal metodo di migrazione specifico:

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Indipendentemente dal metodo di migrazione, ecco i principi generali della migrazione:

  • Il codice rimane invariato. Non è necessario riscrivere le funzioni se si usa una versione del linguaggio supportata da Flex Consumption. Questa guida consente di controllare.
  • È necessario creare una nuova app. Il processo di migrazione crea una nuova app Flex Consumption insieme a quella esistente, in modo da poter eseguire il test prima del passaggio.
  • Usare lo stesso gruppo di risorse. La nuova app viene eseguita nello stesso gruppo di risorse con accesso alle stesse dipendenze.
  • È possibile controllare la tempistica. Testare attentamente la nuova app prima di reindirizzare il traffico e ritirare quello precedente.

Annotazioni

Se si usa Azure per enti pubblici, Flex Consumption non è ancora disponibile. Esaminare ora queste indicazioni in modo che sia possibile prepararsi quando diventa disponibile.

Vantaggi della migrazione al consumo flessibile

Quando si esegue la migrazione, le funzioni ottengono questi vantaggi senza modificare il codice:

  • Avvio a freddo più veloce: le istanze sempre pronte indicano che le funzioni rispondono più rapidamente.
  • Scalabilità migliore: il ridimensionamento per funzione e i controlli di concorrenza offrono maggiore controllo.
  • Supporto della rete virtuale: connettere le funzioni alle reti private e usare endpoint privati.
  • Investimento attivo: Flex Consumption è dove nuove caratteristiche e miglioramenti approdano per primi.

Per ulteriori informazioni, vedere i vantaggi del piano di consumo flessibile e il confronto dei piani di hosting.

Distribuzioni basate sulle risorse

Questo articolo non illustra in modo esplicito come usare infrastructure-as-code (IaC) per la migrazione. Tuttavia, è possibile seguire la stessa procedura di migrazione per convertire i modelli di Resource Manager, i file Bicep e le configurazioni Terraform.

Il piano Flex Consumption introduce una nuova sezione functionAppConfig nella definizione di risorsa Microsoft.Web/sites, che sostituisce diverse impostazioni dell'app legacy. Per informazioni dettagliate su queste modifiche, vedere le deprecazioni del piano Flex Consumption.

Queste risorse possono aiutarti a iniziare con i deployment di risorse Flex Consumption:

Dopo aver completato la migrazione, aggiornare i file di distribuzione delle risorse in modo che corrispondano alla nuova configurazione Flex Consumption.

Prerequisiti

  • Accesso alla sottoscrizione Azure contenente una o più app per le funzioni di cui eseguire la migrazione. L'account usato per eseguire le attività di migrazione deve disporre delle autorizzazioni seguenti:

    • Creare e gestire app di funzione e i piani di hosting di App Service.
    • Assegnare ruoli alle identità gestite.
    • Creare e gestire gli account di archiviazione.
    • Creare e gestire le risorse di Application Insights.
    • Accedere a tutte le risorse dipendenti dell'app, ad esempio Azure Key Vault, bus di servizio di Azure o Hub eventi di Azure.

    L'assegnazione dei ruoli Proprietario o Collaboratore nel gruppo di risorse fornisce in genere autorizzazioni sufficienti.

  • Per eseguire la migrazione usando il interfaccia della riga di comando di Azure o l'GitHub Copilot:

    • interfaccia della riga di comando di Azure versione 2.77.0 o successiva. Obbligatorio quando si usano i comandi interfaccia della riga di comando di Azure. Gli script vengono testati usando interfaccia della riga di comando di Azure in Azure Cloud Shell.
    • Accedere a interfaccia della riga di comando di Azure eseguendo az login. Assicurarsi di essere connessi all'abbonamento che contiene le applicazioni funzionali che si desidera migrare.
    az extension add --name resource-graph
    
  • Per eseguire la migrazione usando GitHub Copilot, configurare GitHub Copilot nella modalità desiderata:

    1. Installare Copilot CLI

    2. Accedere a interfaccia della riga di comando di Azure se non è già stato fatto:

      az login
      

      Assicurarsi di essere connessi all'abbonamento che contiene le applicazioni funzionali che si desidera migrare.

    3. Avvia l'interfaccia della riga di comando del Copilot:

      copilot
      
    4. Aggiungere l'origine del marketplace (solo la prima volta):

      /plugin marketplace add microsoft/azure-skills
      
    5. Installare il plug-in:

      /plugin install azure@azure-skills
      
    6. Dopo l'installazione, ricaricare i server MCP (Model Context Protocol):

      /mcp reload
      
    7. Verificare l'installazione:

      /mcp show
      

      Verrà visualizzato il plug-in azure elencato con un segno di spunta. Il functionapp strumento fa parte di questo plug-in.

    Suggerimento

    Se Copilot seleziona l'abbonamento sbagliato, chiedi di usare un ID abbonamento specifico. È possibile trovare l'ID sottoscrizione eseguendo az account show --query id -o tsv. Se Copilot si connette al tenant di Azure errato, chiedere Copilot di usare l'ID tenant specifico quando si effettuano chiamate Azure. È possibile trovare l'ID tenant eseguendo az account show --query tenantId -o tsv.

Identificare le potenziali app di cui eseguire la migrazione

Suggerimento

Conosce già l'app di cui eseguire la migrazione? È possibile ignorare questa sezione e passare direttamente a Valutare l'app esistente.

Se sono presenti più app per le funzioni e non si è certi di quali devono essere migrate, questa sezione consente di trovarle. Si ottiene un elenco di nomi di app, gruppi di risorse, posizioni e stack di runtime.

Per avviare una migrazione interattiva che analizza la sottoscrizione e richiede di scegliere le app di cui eseguire la migrazione, usare questa richiesta:

migrate my linux function apps in azure from consumption to flex consumption

Copilot identifica le app a consumo Linux idonee, consente di scegliere quali eseguire la migrazione e quindi illustra la valutazione, la creazione, la configurazione e la distribuzione di app per ogni app. Continuare con la procedura di migrazione.

Se si vuole solo vedere quali app sono idonee senza avviare la migrazione, usare invece questa richiesta:

list my linux consumption apps eligible for flex consumption migration

Copilot restituisce un elenco di app idonee e non idonee, insieme ai motivi di eventuali incompatibilità. È quindi possibile eseguire la migrazione di un'app specifica usando il prompt in Avviare la migrazione per Linux.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Valutare l'app esistente

Azure skill esegue automaticamente queste attività. Quando si usa la competenza Azure, passare direttamente a Avvia la migrazione.

Prima di eseguire la migrazione, eseguire questo rapido elenco di controllo per assicurarsi che l'app sia pronta. La maggior parte delle app supera questi controlli senza problemi:

Confermare la compatibilità dell'area

Verificare che il piano a consumo Flex sia attualmente supportato nella stessa area dell'app piano a consumo di cui si intende eseguire la migrazione.

Confermato: Quando l'output del comando az functionapp flex-migration list o la valutazione Copilot include la tua app nell'elenco eligible_apps, il piano Flex Consumption è supportato nella stessa regione usata dalla tua attuale app Linux Consumption. In questo caso, è possibile continuare a Verificare la compatibilità dello stack di linguaggi.

Azione richiesta: Quando l'output include l'app nell'elenco ineligible_apps , viene visualizzato un messaggio di errore che indica The site '<name>' is not in a region supported in Flex Consumption. Please see the list of regions supported in Flex Consumption by running az functionapp list-flexconsumption-locations. In questo caso, il piano di consumo Flex non è supportato nell'area utilizzata dalla tua attuale app Linux a consumo.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Se l'area non è attualmente supportata e si sceglie di eseguire la migrazione dell'app per le funzioni, l'app deve essere eseguita in un'area diversa in cui è supportato il piano a consumo flessibile. Tuttavia, l'esecuzione dell'app in un'area diversa da altri servizi connessi può introdurre una latenza aggiuntiva. Assicurarsi che la nuova area possa soddisfare i requisiti di prestazioni dell'applicazione prima di completare la migrazione.

Verificare la compatibilità dello stack di linguaggio

I piani a consumo Flex non supportano ancora tutti gli stack di linguaggio di Funzioni. Questa tabella indica quali stack di linguaggio sono attualmente supportati:

Impostazione dello stack Nome stack Sostenuto
dotnet-isolated .NET (modello di lavoro isolato) ✅ Sì
node JavaScript/TypeScript ✅ Sì
java Java ✅ Sì
python Python ✅ Sì
powershell PowerShell ✅ Sì
dotnet .NET (modello in-process) ❌ No
custom Gestori personalizzati ✅ Sì

Confermato: Se il comando az functionapp flex-migration list o la valutazione di Copilot includeva l'app nell'elenco eligible_apps, l'app a consumo Linux sta già usando uno stack linguistico supportato da Flex Consumption e puoi continuare a Verificare la compatibilità della versione dello stack.

Azione richiesta: Se l'output include l'app nell'elenco ineligible_apps con un messaggio di errore che indica Runtime '<name>' not supported for function apps on the Flex Consumption plan., l'app a consumo Linux non esegue un runtime supportato da Flex Consumption.

Se l'app per le funzioni usa uno stack di runtime non supportato:

Verificare la compatibilità delle versioni dello stack

Prima della migrazione, assicurarsi che la versione dello stack di runtime dell'app sia supportata durante l'esecuzione in un piano a consumo Flex nell'area corrente.

Confirmed: Se il comando az functionapp flex-migration list o la valutazione di Copilot include la tua app nell'elenco eligible_apps, la tua app a consumo Linux utilizza già una versione dello stack di linguaggi supportata da Flex Consumption e puoi continuare a Verificare l'utilizzo degli slot di distribuzione.

Azione richiesta: Se l'output include l'app nell'elenco ineligible_apps con un messaggio di errore che indica Invalid version {0} for runtime {1} for function apps on the Flex Consumption plan. Supported versions for runtime {1} are {2}., l'app a consumo Linux non esegue un runtime supportato da Flex Consumption.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Se l'app per le funzioni usa una versione dello stack di linguaggio non supportata, aggiornare innanzitutto il codice dell'app a una versione supportata prima di eseguire la migrazione al piano Flex Consumption.

Verificare l'utilizzo degli slot di distribuzione

Le app del piano a consumo possono avere uno slot di distribuzione definito. Per altre informazioni, vedere Funzioni di Azure slot di distribuzione. Tuttavia, il piano a consumo Flex non supporta attualmente gli slot di distribuzione. Prima di eseguire la migrazione, determinare se l'app ha uno slot di distribuzione. In caso affermativo, definisci una strategia per gestire l'app senza slot di distribuzione quando viene eseguita in un piano Flex Consumption.

Confermato: Quando l'app corrente dispone di slot di distribuzione abilitati, il comando az functionapp flex-migration list o la valutazione di Copilot mostra l'app per le funzioni nell'elenco eligible_apps senza alcun avviso. Continuare a Verificare l'uso dei certificati.

Azione richiesta: L'app corrente ha slot di distribuzione abilitati e l'output mostra la funzione app nell'elenco eligible_apps, ma aggiunge un avviso che indica: The site '<name>' has slots configured. This condition doesn't block migration, but please note that slots aren't supported in Flex Consumption.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Se l'app per le funzioni usa attualmente slot di distribuzione, non è attualmente possibile riprodurre questa funzionalità nel piano a consumo Flex. Prima della migrazione, prendere in considerazione le opzioni seguenti:

  • Riprogettare l'applicazione per usare app per le funzioni separate. In questo modo, è possibile sviluppare, testare e distribuire il codice della funzione in una seconda app non di produzione anziché usare gli slot.
  • Eseguire la migrazione di qualsiasi nuovo codice o funzionalità dallo slot di distribuzione allo slot principale (produzione).

Verificare l'uso dei certificati

I certificati TLS (Transport Layer Security), noti in precedenza come certificati SSL (Secure Sockets Layer), consentono di proteggere le connessioni Internet. Il piano Flex Consumption non supporta attualmente i certificati TLS/SSL, che includono certificati gestiti, certificati bring your own (BYOC) o certificati a chiave pubblica.

Confermato: Se il comando az functionapp flex-migration list o la valutazione Copilot include la tua app nell'elenco eligible_apps, la tua app a consumo Linux non usa i certificati ed è possibile continuare a verificare i trigger di archiviazione Blob.

Azione richiesta: Se l'output include l'app nell'elenco ineligible_apps con un messaggio di errore che indica The site '<name>' is using TSL/SSL certificates. TSL/SSL certificates are not supported in Flex Consumption. o The site '<name>' has the WEBSITE_LOAD_CERTIFICATES app setting configured. Certificate loading is not supported in Flex Consumption., l'app a consumo Linux non è compatibile con Flex Consumption.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Se l'app attualmente si basa su certificati TLS/SSL, non procedere con la migrazione fino a quando non viene aggiunto il supporto per i certificati al piano Flex Consumption.

Verifica i trigger di archiviazione di Blob

Attualmente, il piano Flex Consumption supporta solo trigger basati su eventi per l'archiviazione BLOB di Azure, definiti con un'impostazione di SourceEventGrid. Il piano non supporta i trigger di archiviazione BLOB che usano il polling dei contenitori e usano un'impostazione Source di LogsAndContainerScan. Poiché il polling dei contenitori è l'impostazione predefinita, è necessario determinare se uno dei trigger di archiviazione Blob utilizza l'impostazione di origine predefinita LogsAndContainerScan. Per altre informazioni, vedere Trigger in un contenitore BLOB.

Confirmed: Se il comando az functionapp flex-migration list o la valutazione di Copilot includono la tua app nell'elenco eligible_apps, l'app Linux a consumo non utilizza i trigger di archiviazione Blob con EventGrid come origine. È possibile continuare a Prendere in considerazione i servizi dipendenti.

Azione richiesta: Se l'output include l'app nell'elenco ineligible_apps con un messaggio di errore che indica The site '<name>' has blob storage triggers that don't use Event Grid as the source: <list> Flex Consumption only supports Event Grid-based blob triggers. Please convert these triggers to use Event Grid or replace them with Event Grid triggers before migration., l'app a consumo Linux non è compatibile con Flex Consumption.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Se l'app dispone di trigger di archiviazione BLOB che non dispongono di un'origine griglia di eventi, è necessario passare a un'origine griglia di eventi prima di eseguire la migrazione al piano Flex Consumption.

I passaggi di base per modificare un trigger di archiviazione Blob esistente in un'origine Event Grid sono:

  1. Aggiungi o aggiorna la proprietà source nella definizione del trigger di archiviazione Blob a EventGrid e ridistribuisci l'app.

  2. Compilare l'URL dell'endpoint nell'app per le funzioni usato per la sottoscrizione di eventi.

  3. Creare una sottoscrizione di eventi nel contenitore di archiviazione BLOB.

Per altre informazioni, vedere Tutorial: Attivare Funzioni di Azure nei contenitori BLOB usando una sottoscrizione di eventi.

Prendere in considerazione i servizi dipendenti

Suggerimento

Applicazione solo HTTP semplice? Se le funzioni usano solo trigger HTTP e non si connettono ad altri servizi di Azure, è probabile che si ignori la maggior parte di questa sezione. Ricordarsi di aggiornare tutti i client in modo che puntino all'URL della nuova app dopo la migrazione.

Poiché Funzioni di Azure è un servizio di calcolo, prendere in considerazione l'effetto della migrazione sui dati e sui servizi sia upstream che downstream dell'app.

Strategie di protezione dei dati

Per proteggere i dati upstream e downstream durante la migrazione, usare queste strategie:

  • Idempotenza: assicurarsi che le funzioni possano elaborare in modo sicuro lo stesso messaggio più volte senza effetti collaterali negativi. Per altre informazioni, vedere Progettazione di Funzioni di Azure per lo stesso input.
  • Registrazione e monitoraggio: per tenere traccia dell'elaborazione dei messaggi, abilitare la registrazione dettagliata in entrambe le app durante la migrazione. Per altre informazioni, vedere Monitoraggio delle esecuzioni in Funzioni di Azure.
  • Checkpointing: per i trigger di streaming, ad esempio il trigger di Hub eventi, implementare comportamenti di checkpoint corretti per tenere traccia della posizione di elaborazione. Per ulteriori informazioni, vedere elaborazione affidabile degli eventi di Funzioni di Azure.
  • Elaborazione parallela: prendere in considerazione l'esecuzione temporanea di entrambe le app in parallelo durante il cutover. Assicurarsi di monitorare attentamente e convalidare il modo in cui i dati vengono elaborati dal servizio upstream. Per altre informazioni, vedere Soluzioni personalizzate in più aree per la resilienza.
  • Cutover graduale: per i sistemi con volumi elevati, è consigliabile implementare un cutover graduale reindirizzando parti del traffico alla nuova app. È possibile gestire il routing delle richieste upstream dalle app usando servizi come Gestione API di Azure o gateway applicazione di Azure.

Mitigazioni in base al tipo di trigger

Pianificare strategie di mitigazione per proteggere i dati per i trigger di funzione specifici nell'app:

Attivatore Rischio per i dati Strategia
Archiviazione di Azure Blob Alto Creare un contenitore separato per il trigger basato su eventi nella nuova app.
Con la nuova app in esecuzione, cambiare i client per usare il nuovo contenitore.
Consentire l'elaborazione completa del contenitore originale prima di arrestare l'app precedente.
Azure Cosmos DB Alto Creare un contenitore di lease dedicato in modo specifico per la nuova app.
Impostare questo nuovo contenitore di lease come configurazione leaseCollectionName nella nuova app.
Richiede che le funzioni siano idempotenti, oppure che siate in grado di gestire i risultati dell'elaborazione duplicata del feed di modifiche.
Impostare la StartFromBeginning configurazione su false nella nuova app per evitare di rielaborare l'intero feed.
Griglia di eventi di Azure Intermedio Ricreare la stessa sottoscrizione di eventi nella nuova app.
Richiede che le funzioni siano idempotenti o che sia necessario essere in grado di gestire i risultati dell'elaborazione di eventi duplicati.
Hub eventi di Azure Intermedio Creare un nuovo gruppo di consumer da usare dalla nuova app. Per altre informazioni, vedere Strategie di migrazione per i trigger di Griglia di eventi.
bus di servizio di Azure Alto Creare un nuovo argomento o una coda da usare dalla nuova app.
Aggiornare mittenti e client per usare il nuovo argomento o coda.
Quando l'argomento originale è vuoto, chiudere la vecchia app.
Archiviazione di Azure queue Alto Creare una nuova coda da usare per la nuova app.
Aggiornare mittenti e client per usare la nuova coda.
Dopo che la coda originale è vuota, arrestare l'app precedente.
HTTP Basso livello Ricordarsi di cambiare client e altre app o servizi in modo che puntino ai nuovi endpoint HTTP dopo la migrazione.Remember to switch clients and other apps or services to target the new HTTP endpoints after the migration.
Temporizzatore Basso livello Durante il cutover, assicurarsi di compensare la pianificazione del timer tra le due app per evitare esecuzioni simultanee da entrambe le app.
Disabilitare il trigger timer nell'app precedente dopo l'esecuzione corretta della nuova app.

Attività di premigration

Prima di creare la nuova app Flex Consumption, raccogliere alcune informazioni sull'app corrente. Questo passaggio garantisce che non si perdano impostazioni durante la transizione.

Suggerimento

Questo passaggio consiste principalmente in un lavoro di copia e incolla. Raccogliere le impostazioni dall'app esistente in modo da poterle applicare alla nuova app.

Completare queste attività prima della migrazione:

Raccogliere le impostazioni dell'app

Se prevedi di usare le stesse origini trigger e binding e altre impostazioni dalle impostazioni dell'app, prendi prima nota delle impostazioni correnti dell'app nel piano di consumo esistente.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Attenzione

Le impostazioni dell'app contengono spesso chiavi e altri segreti condivisi. Archiviare sempre le impostazioni dell'applicazione in modo sicuro, idealmente crittografate. Per una maggiore sicurezza, usare l'autenticazione Microsoft Entra ID con identità gestite nella nuova app del piano a consumo Flex anziché i segreti condivisi.

Raccogliere le configurazioni dell'applicazione

Altre configurazioni dell'app esistono oltre le impostazioni dell'app. Acquisire queste configurazioni dall'app esistente in modo da poterle ricreare correttamente nella nuova app.

Esaminare queste impostazioni. Se sono presenti nell'app corrente, decidere se ricrearli nella nuova app Flex Consumption plan:

Configurazione Impostazione Comment
Impostazioni CORS cors Determina le impostazioni CORS (Cross-Origin Resource Sharing) esistenti, che i client potrebbero richiedere.
Domini personalizzati Se la tua app usa attualmente un dominio diverso da *.azurewebsites.net, è necessario sostituire questa mappatura di dominio personalizzato con una mappatura alla tua nuova app.
Versione HTTP http20Enabled Determina se l'app richiede HTTP 2.0.
Solo HTTPS httpsOnly Determina se TSL/SSL è necessario per accedere all'app.
Certificati client in ingresso clientCertEnabled
clientCertMode
clientCertExclusionPaths
Imposta i requisiti per le richieste client che usano certificati per l'autenticazione.
Limite masssimo per numero di istanze WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT Imposta il limite per le istanze con scalabilità orizzontale. Il valore massimo predefinito è 200. Questo valore si trova nelle impostazioni dell'app, ma in un'app del piano a consumo flessibile viene invece aggiunto come impostazione del sito (maximumInstanceCount).
Versione minima di TLS in ingresso minTlsVersion Imposta una versione minima di TLS richiesta dall'app.
Cifrario TLS minimo in ingresso minTlsCipherSuite Imposta un requisito minimo di crittografia TLS per l'app.
Condivisioni di File di Azure montate azureStorageAccounts Determina se esistono condivisioni file montate in modo esplicito nell'app (solo Linux).
Credenziali di autenticazione di base per la pubblicazione su SCM scm.allow Determina se il scm sito di pubblicazione è abilitato. Sebbene non sia consigliabile per la sicurezza, alcuni metodi di pubblicazione le richiedono.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Identificare le identità gestite e l'accesso basato sui ruoli

Prima della migrazione, documentare se l'app si basa sull'identità gestita assegnata dal sistema o su eventuali identità gestite assegnate dall'utente. Determinare le autorizzazioni di controllo degli accessi in base al ruolo concesse a queste identità. È necessario ricreare l'identità gestita assegnata dal sistema e tutte le assegnazioni di ruolo nella nuova app. È possibile riutilizzare le identità gestite assegnate dall'utente nella nuova app.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Identificare le impostazioni di autenticazione predefinite

Prima di eseguire la migrazione a Flex Consumption, raccogliere informazioni sulle configurazioni di autenticazione predefinite. Se si vuole che l'app usi gli stessi comportamenti di autenticazione client, è necessario ricrearli nella nuova app. Per altre informazioni, vedere Authentication and authorization in Funzioni di Azure.

Prestare particolare attenzione agli URI di reindirizzamento, ai reindirizzamenti esterni consentiti e alle impostazioni dei token per garantire una transizione uniforme per gli utenti autenticati.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Esaminare le restrizioni di accesso in ingresso

È possibile impostare restrizioni di accesso in ingresso per le app in un piano a consumo. Potresti voler mantenere queste restrizioni nella nuova app. Per ogni restrizione definita, assicùratevi di acquisire queste proprietà.

  • Indirizzi IP o intervalli CIDR
  • Valori di priorità
  • Tipo di azione (Consenti/Nega)
  • Nomi delle regole

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Quando si esegue nel piano Flex Consumption, è possibile ricreare queste restrizioni basate su IP in ingresso. È possibile proteggere ulteriormente l'app implementando altre restrizioni di rete, ad esempio l'integrazione della rete virtuale e gli endpoint privati in ingresso. Per altre informazioni, vedere Integrazione della rete virtuale.

Avviare la migrazione

Se hai utilizzato la richiesta di individuazione nella sezione Identificazione, la capacità ha già valutato, creato e configurato la nuova app Flex Consumption. È possibile ignorare questa sezione e continuare con la procedura di migrazione.

Se si conosce già l'app di cui eseguire la migrazione, usare questo prompt:

migrate my app <APP_NAME> to flex consumption

La competenza gestisce automaticamente la valutazione, la creazione dell'app e la az functionapp flex-migration start migrazione della configurazione, equivalente al comando e ai relativi passaggi di verifica.

Dopo aver avviato correttamente la migrazione, continuare a Ottenere il pacchetto di distribuzione del codice.

Ottenere il pacchetto di distribuzione del codice

Per ridistribuire l'app, sono necessari i file di origine del progetto o il pacchetto di distribuzione. Idealmente, i file di progetto vengono mantenuti nel controllo del codice sorgente in modo da poter ridistribuire facilmente il codice della funzione nella nuova app. Se si dispone di file di codice sorgente, è possibile ignorare questa sezione e continuare a Acquisire benchmark delle prestazioni (facoltativo).

Se non si ha più accesso ai file di origine del progetto, è possibile scaricare il pacchetto di distribuzione corrente dall'app piano a consumo esistente in Azure. Il percorso del pacchetto di distribuzione dipende dal fatto che si esegua in Linux o Windows.

Le app del piano a consumo in Linux mantengono il file del pacchetto ZIP di distribuzione in una delle posizioni seguenti:

  • Container di Azure Blob Storage denominato scm-releases nell'account di archiviazione host predefinito (AzureWebJobsStorage). Questo contenitore è l'origine di distribuzione predefinita per un'applicazione con piano a consumo su Linux.

  • Se l'app include un'impostazione WEBSITE_RUN_FROM_PACKAGE che è un URL, il pacchetto si trova in una posizione gestita accessibile esternamente. Un pacchetto esterno deve essere ospitato in un contenitore di archiviazione BLOB con accesso limitato. Per altre informazioni, vedere URL del pacchetto esterno.

Suggerimento

Se limiti l'accesso dell'account di archiviazione solo all'identità gestita, potrebbe essere necessario concedere all'account Azure l'accesso in lettura al contenitore di archiviazione aggiungendolo al ruolo Storage Blob Data Reader.

Il pacchetto di distribuzione viene compresso usando il squashfs formato . Per vedere cosa c'è all'interno del pacchetto, è necessario usare strumenti in grado di decomprimere questo formato.

Usare questi passaggi per scaricare il pacchetto di distribuzione dall'app corrente:

La funzionalità di migrazione di Copilot tenta di scaricare e ridistribuire il vostro progetto di codice esistente nella nuova app. In caso di esito negativo, ti guida invece nell'ottenere e rilasciare il pacchetto di codice come parte del flusso di lavoro di migrazione. È possibile ignorare questa sezione e continuare a Passaggi di migrazione.

Il percorso dei file di origine del progetto dipende dall'impostazione dell'app WEBSITE_RUN_FROM_PACKAGE come indicato di seguito:

Valore della proprietà WEBSITE_RUN_FROM_PACKAGE Percorso del file di origine
1 I file si trovano in un pacchetto ZIP archiviato nella condivisione File di Azure dell'account di archiviazione definito dall'impostazione WEBSITE_CONTENTAZUREFILECONNECTIONSTRING. L'impostazione WEBSITE_CONTENTSHARE definisce Il nome della condivisione file.
URL di un endpoint I file si trovano in un pacchetto ZIP in un percorso gestito accessibile esternamente. Un pacchetto esterno deve essere ospitato in un contenitore di archiviazione BLOB con accesso limitato. Per altre informazioni, vedere URL del pacchetto esterno.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Acquisire benchmark delle prestazioni (facoltativo)

Se prevedi di convalidare il miglioramento delle prestazioni nella tua app in base alla migrazione al piano Flex Consumption, prendi in considerazione l'acquisizione dei benchmark delle prestazioni del piano corrente. È quindi possibile confrontarli con gli stessi benchmark per l'app in esecuzione in un piano Flex Consumption.

Suggerimento

Confrontare sempre le prestazioni in condizioni simili, ad esempio l'ora del giorno, il giorno della settimana e il carico client. Provare a eseguire i due benchmark il più vicino possibile.

Ecco alcuni benchmark da considerare per i test delle prestazioni strutturati:

Benchmark suggerito Comment
Avvio a freddo Misurare il tempo dalla prima richiesta alla prima risposta dopo un periodo di inattività.
Velocità effettiva Misurare le richieste massime al secondo usando gli strumenti di test di carico per determinare come l'app gestisce le richieste simultanee.
Latenza Tenere traccia dei P50tempi di risposta , P95e P99 in diverse condizioni di carico. È possibile monitorare queste metriche in Application Insights.

Usare questa query Kusto per esaminare i tempi di risposta di latenza suggeriti in Application Insights:

requests
| where timestamp > ago(1d)
| summarize percentiles(duration, 50, 95, 99) by bin(timestamp, 1h)
| render timechart

Passaggi per la migrazione

Per eseguire la migrazione delle funzioni da un'app piano di consumo a un'app piano a consumo flessibile, seguire questi passaggi principali:

Verificare che l'app Flex Consumption sia stata creata e configurata

Dopo aver eseguito il comando az functionapp flex-migration start , verificare che la nuova app Flex Consumption sia stata creata correttamente e configurata correttamente. Ecco alcuni passaggi per convalidare i risultati della migrazione:

La funzionalità di migrazione di Copilot verifica automaticamente la nuova app nel contesto della migrazione. Se hai avviato la migrazione utilizzando un prompt di Copilot in Avvia la migrazione per Linux, la funzione ha già verificato che l'app sia stata creata e configurata correttamente. È possibile ignorare questa sezione e continuare a Configurare l'autenticazione predefinita.

Esaminare il riepilogo della migrazione

Il comando di migrazione automatica trasferisce la maggior parte delle configurazioni. Tuttavia, verificare manualmente che questi elementi vengano migrati. Potrebbe essere necessario configurarli manualmente:

  • Certificati: i certificati TLS/SSL non sono ancora supportati in Flex Consumption.
  • Slot di distribuzione: Non supportati in Consumo Flessibile.
  • Impostazioni di autenticazione predefinite: è necessario riconfigurare queste impostazioni manualmente.
  • Impostazioni CORS: potrebbe essere necessario verificare queste impostazioni manualmente a seconda della configurazione.

Se le impostazioni critiche mancano o non sono corrette, configurarle manualmente seguendo la procedura descritta nelle sezioni Windows processo di migrazione di questo articolo.

Revisione finale del piano

Prima di procedere con il processo di migrazione, eseguire questi ultimi passaggi preliminari:

  • Esaminare tutte le informazioni raccolte: esaminare tutte le note, i dettagli di configurazione e le impostazioni dell'applicazione documentate nelle sezioni precedenti di valutazione e premigration. Se qualcosa non è chiaro, eseguire di nuovo i comandi interfaccia della riga di comando di Azure o ottenere le informazioni dal portale.

  • Definire il piano di migrazione: in base ai risultati, creare un elenco di controllo per la migrazione evidenziata:

    • Tutte le impostazioni che richiedono particolare attenzione
    • Trigger e associazioni o altre dipendenze che potrebbero essere interessate durante la migrazione
    • Strategia di test per la convalida post-migrazione
    • Piano di rollback in caso di problemi imprevisti
  • Pianificazione dei tempi di inattività: prendere in considerazione quando arrestare l'app per le funzioni originale per evitare la perdita di dati e l'elaborazione duplicata degli eventi e come questa migrazione potrebbe influire sugli utenti o sui sistemi downstream. In alcuni casi, potrebbe essere necessario disabilitare funzioni specifiche prima di arrestare l'intera app.

Un'attenta revisione finale consente di garantire un processo di migrazione più semplice e riduce al minimo il rischio di ignorare le configurazioni importanti.

Creare un'app nel piano Flex Consumption

È possibile creare un'app per le funzioni nel piano a consumo Flex insieme ad altre risorse necessarie Azure in diversi modi:

Opzione di creazione Articoli di riferimento
interfaccia della riga di comando di Azure Creare un'app Flex Consumption
portale di Azure Creare un'app per le funzioni nel portale di Azure
Infrastruttura come codice Modello ARM
azd
Bicep
Terraform
Visual Studio Code distribuzione Visual Studio Code
Visual Studio Visual Studio distribuzione

Suggerimento

Quando possibile, usare Microsoft Entra ID per l'autenticazione anziché per le stringhe di connessione, che contengono chiavi condivise. L'uso delle identità gestite è una procedura consigliata che migliora la sicurezza eliminando la necessità di archiviare i segreti condivisi direttamente nelle impostazioni dell'applicazione. Se l'app originale usa le stringhe di connessione, il piano Flex Consumption supporta le identità gestite. La maggior parte di questi collegamenti illustra come abilitare le identità gestite nell'app per le funzioni.

Applicare le impostazioni dell'app migrate nella nuova app

Prima di distribuire il codice, configurare la nuova app con le impostazioni pertinenti dell'app Piano a consumo Flex dall'app per le funzioni originale.

Importante

Non tutte le impostazioni dell'app Piano a consumo sono supportate durante l'esecuzione in un piano a consumo Flex. Per altre informazioni, vedere Deprecazione nel piano a consumo Flex.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Applicare altre configurazioni dell'app

Trova l'elenco di altre configurazioni dell'app dalla tua vecchia app che hai raccolto durante la pre-migrazione e impostale nella nuova app.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Configurare le impostazioni di scalabilità e concorrenza

Il piano Flex Consumption usa il ridimensionamento per funzione. Ogni funzione all'interno dell'app viene ridimensionata in modo indipendente in base al carico di lavoro. Il ridimensionamento è più strettamente correlato alle impostazioni di concorrenza. Queste impostazioni consentono di prendere decisioni di ridimensionamento in base alle esecuzioni simultanee correnti. Per ulteriori informazioni, vedere sia Scalabilità per funzione che Concorrenza nell'articolo del piano Flex Consumption.

Se vuoi che la nuova app possa scalare come l'app originale, prendi in considerazione i parametri di concorrenza. L'impostazione di valori di concorrenza più elevati può comportare la creazione di meno istanze per gestire lo stesso carico.

Se imposti un limite di scalabilità orizzontale personalizzato nell'app originale, puoi applicarlo alla nuova app. In caso contrario, passare alla sezione successiva.

Il numero massimo di istanze predefinito è 100. Impostarlo su un valore compreso tra 1 e 1.000.

Annotazioni

La riduzione del numero massimo di istanze inferiore a 40 per le app per le funzioni HTTP può causare frequenti errori di richiesta e finestre di limitazione prolungate quando il traffico supera la capacità. Questa impostazione è destinata solo agli scenari avanzati in cui la scalabilità orizzontale limitata è accettabile ed è completamente testata.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Configurare tutti i domini personalizzati e l'accesso CORS

Se l'app originale aveva domini personalizzati associati o impostazioni CORS, ricrearle nella nuova app. Per altre informazioni sui domini personalizzati, vedere Impostare un dominio personalizzato esistente in Servizio app di Azure.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Configurare le identità gestite e assegnare ruoli

La modalità di configurazione delle identità gestite nella nuova app dipende dal tipo di identità gestita:

Tipo di identità gestita Creare l'identità Assegnazioni di ruolo
Assegnata dall'utente Opzionale È possibile continuare a usare le stesse identità gestite assegnate dall'utente con la nuova app. È necessario riassegnare queste identità all'app Flex Consumption e verificare che abbiano ancora le assegnazioni di ruolo corrette nei servizi remoti. Se si sceglie di creare nuove identità per la nuova app, è necessario assegnare gli stessi ruoli delle identità esistenti.
Assegnata dal sistema Poiché ogni app per le funzioni ha una propria identità gestita assegnata dal sistema, è necessario abilitare l'identità gestita assegnata dal sistema nella nuova app e riassegnare gli stessi ruoli dell'app originale.

Ricreare correttamente le assegnazioni di ruolo è fondamentale per garantire che l'app per le funzioni abbia lo stesso accesso alle risorse Azure dopo la migrazione.

Suggerimento

Se l'app originale usa stringhe di connessione o altri segreti condivisi per l'autenticazione, questa è un'ottima opportunità per migliorare la sicurezza dell'app passando all'uso dell'autenticazione Microsoft Entra ID con identità gestite. Per altre informazioni, vedere Tutorial: Creare un'app per le funzioni che si connette ai servizi di Azure usando identità anziché segreti.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Configurare le restrizioni di accesso alla rete

Se l'app originale ha restrizioni di accesso in ingresso basate su IP, ricreare una delle stesse regole di accesso in ingresso che si vuole mantenere nella nuova app.

Suggerimento

Il piano Flex Consumption supporta completamente l'integrazione della rete virtuale. A causa di questo supporto, è anche possibile usare endpoint privati in ingresso dopo la migrazione. Per altre informazioni, vedere endpoint privati.

La competenza di migrazione GitHub Copilot è attualmente supportata solo durante la migrazione delle app Linux. Per eseguire la migrazione di un'app a consumo di Windows, usare le schede interfaccia della riga di comando di Azure o Azure portal.

Abilitare il monitoraggio

Prima di avviare la nuova app nel piano a consumo Flex, assicurarsi che Application Insights sia abilitato. Quando si configura Application Insights, è possibile risolvere eventuali problemi che si verificano durante la distribuzione del codice e l'avvio.

Implementare una strategia di monitoraggio completa che copre le metriche, i log e i costi delle app. Usando questa strategia, è possibile convalidare l'esito positivo della migrazione, identificare rapidamente eventuali problemi e ottimizzare le prestazioni e i costi della nuova app.

Se prevedi di confrontare questa nuova app con la tua app corrente, assicurati che lo schema raccolga anche i benchmark necessari per il confronto. Per altre informazioni, vedere Configurare il monitoraggio.

Configurare l'autenticazione predefinita

Se l'app originale usava l'autenticazione client predefinita (talvolta denominata Easy Auth), ricrearla nella nuova app. Se si prevede di riutilizzare la stessa registrazione del client, assicurarsi di impostare gli endpoint autenticati della nuova app nel provider di autenticazione.

L'abilità di migrazione Copilot su Linux non automatizza la configurazione dell'autenticazione integrata. Usare le schede interfaccia della riga di comando di Azure o Azure portal per ricreare manualmente le impostazioni di autenticazione.

Distribuire il codice dell'app nella nuova risorsa Flex Consumption

Dopo aver configurato la nuova app del piano Flex Consumption in base alle impostazioni dell'app originale, distribuisci il codice nelle risorse della nuova app in Azure.

Attenzione

Dopo aver completato la distribuzione, i trigger nella nuova app avviano immediatamente l'elaborazione dei dati dai servizi connessi. Per ridurre al minimo i dati duplicati e prevenire la perdita di dati durante l'avvio della nuova app e l'arresto dell'app originale, esaminare le strategie definite nelle mitigazioni in base al tipo di trigger.

Funzioni offre diversi modi per distribuire il codice, dal progetto di codice o come pacchetto di distribuzione pronto per l'esecuzione.

Suggerimento

Se si gestisce il codice del progetto in un repository di codice sorgente, ora è il momento perfetto per configurare una pipeline di distribuzione continua. La distribuzione continua consente di distribuire automaticamente gli aggiornamenti delle applicazioni in base alle modifiche in un repository connesso.

Aggiornare i flussi di lavoro di distribuzione esistenti per distribuire il codice sorgente nella nuova app:

È anche possibile creare un nuovo flusso di lavoro di distribuzione continua per la nuova app. Per ulteriori informazioni, vedere Distribuzione continua per Funzioni di Azure.

Attività post-migrazione

🎉 Congratulazioni! L'app è ora in esecuzione su Flex Consumption. Per sfruttare al meglio il nuovo piano, prendere in considerazione queste attività di completamento facoltative:

Verificare le funzionalità di base

  1. Verificare che la nuova app sia in esecuzione in un piano di consumo flessibile:

    La competenza di migrazione Copilot per Linux convalida automaticamente la nuova app dopo la distribuzione, inclusa la verifica che l'app sia raggiungibile e in esecuzione nel piano Flex Consumption. Se è necessario riconvalidare, usare questo prompt:

    verify my flex consumption app <APP_NAME> is running correctly
    
  2. Usare un client HTTP per chiamare almeno un endpoint trigger HTTP nella nuova app per assicurarsi che risponda come previsto.

Acquisire benchmark delle prestazioni

Con la nuova app in esecuzione, eseguire gli stessi benchmark delle prestazioni raccolti dall'app originale, ad esempio:

Benchmark suggerito Comment
Avvio a freddo Misurare il tempo dalla prima richiesta alla prima risposta dopo un periodo di inattività.
Velocità effettiva Misurare le richieste massime al secondo usando gli strumenti di test di carico per determinare come l'app gestisce le richieste simultanee.
Latenza Tenere traccia dei P50tempi di risposta , P95e P99 in diverse condizioni di carico. È possibile monitorare queste metriche in Application Insights.

Usare questa query Kusto per esaminare i tempi di risposta di latenza suggeriti in Application Insights:

requests
| where timestamp > ago(1d)
| summarize percentiles(duration, 50, 95, 99) by bin(timestamp, 1h)
| render timechart

Annotazioni

Le metriche del piano di consumo flessibile differiscono dalle metriche del piano a consumo. Quando si confrontano le prestazioni prima e dopo la migrazione, tenere presente che è necessario usare metriche diverse per tenere traccia di caratteristiche di prestazioni simili. Per altre informazioni, vedere Configurare il monitoraggio.

Creare dashboard personalizzate

Usando Monitoraggio di Azure metriche e Application Insights, è possibile creare dashboard nel portale di Azure che visualizzano grafici sia dalle metriche della piattaforma che dai log di runtime e dall'analisi.

Valutare la possibilità di configurare dashboard e avvisi sulle metriche chiave nel portale di Azure. Per altre informazioni, vedi Monitora l'app in Azure.

Ridefinire le impostazioni del piano

I miglioramenti effettivi delle prestazioni e le implicazioni sui costi della migrazione possono variare in base ai carichi di lavoro e alla configurazione specifici dell'app. Il piano Flex Consumption offre diverse impostazioni che è possibile modificare per perfezionare le prestazioni dell'app. Potresti voler apportare modifiche in modo più approfondito al comportamento dell'app originale o bilanciare i costi rispetto alle prestazioni. Per altre informazioni, vedere Ottimizzare l'app nell'articolo Flex Consumption .For more information, see Fine-tune your app in the Flex Consumption article.

Aggiornare i file di distribuzione delle risorse

Se si gestisce l'infrastruttura dell'app per le funzioni usando Bicep o Terraform, aggiornare i file di distribuzione per puntare ora al piano Flex Consumption. Questa sezione illustra le differenze principali tra le definizioni delle risorse del piano a consumo e del piano Flex Consumption.

Importante

Non è possibile convertire un'app con piano a consumo esistente in Consumo Flessibile. È necessario creare nuove risorse con un nuovo nome o eliminare le risorse esistenti prima di distribuire gli equivalenti Flex Consumption.

Differenze principali

Quando si esegue la migrazione delle distribuzioni di risorse dal consumo al consumo flessibile, prendere in considerazione queste importanti modifiche:

Aspetto Piano di consumo Piano A consumo Flex
SKU del piano di hosting Y1 (Dinamico) FC1 (Consumo Flessibile)
Piano obbligatorio Facoltativo (creazione automatica) Obbligatorio (deve essere esplicito)
Sistema operativo Windows o Linux Solo Linux
Configurazione Impostazioni app Sezione functionAppConfig
Condivisione contenuto di archiviazione WEBSITE_CONTENTSHARE impostazione deployment.storage in functionAppConfig

Gli esempi seguenti illustrano le differenze principali tra le definizioni delle risorse del piano a consumo e a consumo flessibile. Usano un'identità gestita assegnata dal sistema ma non sono del tutto funzionali. Non includono tutte le risorse necessarie, ad esempio account di archiviazione, Application Insights o tutte le assegnazioni di ruolo necessarie. Per esempi completi e pronti per la produzione, vedere gli esempi Flex Consumption IaC.

Piano a consumo (prima):

// Consumption plan (optional - auto-created if omitted)
resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-01' = {
  name: hostingPlanName
  location: location
  sku: {
    name: 'Y1'
    tier: 'Dynamic'
  }
  properties: {
    reserved: true // Linux
  }
}

resource functionApp 'Microsoft.Web/sites@2022-03-01' = {
  name: functionAppName
  location: location
  kind: 'functionapp,linux'
  properties: {
    serverFarmId: hostingPlan.id
    siteConfig: {
      linuxFxVersion: 'DOTNET-ISOLATED|8.0'
      appSettings: [
        { name: 'FUNCTIONS_EXTENSION_VERSION', value: '~4' }
        { name: 'FUNCTIONS_WORKER_RUNTIME', value: 'dotnet-isolated' }
        { name: 'AzureWebJobsStorage__accountName', value: storageAccount.name }
        { name: 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING__accountName', value: storageAccount.name }
        { name: 'WEBSITE_CONTENTSHARE', value: functionAppName }
        { name: 'APPLICATIONINSIGHTS_CONNECTION_STRING', value: appInsights.properties.ConnectionString }
        { name: 'APPLICATIONINSIGHTS_AUTHENTICATION_STRING', value: 'Authorization=AAD' }
      ]
    }
  }
  identity: {
    type: 'SystemAssigned'
  }
}

Piano di consumo flessibile (dopo):

// Flex Consumption plan (required)
resource hostingPlan 'Microsoft.Web/serverfarms@2023-12-01' = {
  name: hostingPlanName
  location: location
  sku: {
    name: 'FC1'
    tier: 'FlexConsumption'
  }
  kind: 'functionapp'
  properties: {
    reserved: true
  }
}

// Deployment storage container (required)
resource deploymentContainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2023-05-01' = {
  name: '${storageAccount.name}/default/deployments'
}

resource functionApp 'Microsoft.Web/sites@2023-12-01' = {
  name: functionAppName
  location: location
  kind: 'functionapp,linux'
  properties: {
    serverFarmId: hostingPlan.id
    functionAppConfig: {
      deployment: {
        storage: {
          type: 'blobContainer'
          value: '${storageAccount.properties.primaryEndpoints.blob}deployments'
          authentication: {
            type: 'SystemAssignedIdentity'
          }
        }
      }
      scaleAndConcurrency: {
        maximumInstanceCount: 100
        instanceMemoryMB: 2048
      }
      runtime: {
        name: 'dotnet-isolated'
        version: '8.0'
      }
    }
    siteConfig: {
      appSettings: [
        { name: 'AzureWebJobsStorage__accountName', value: storageAccount.name }
        { name: 'APPLICATIONINSIGHTS_CONNECTION_STRING', value: appInsights.properties.ConnectionString }
        { name: 'APPLICATIONINSIGHTS_AUTHENTICATION_STRING', value: 'Authorization=AAD' }
      ]
    }
  }
  identity: {
    type: 'SystemAssigned'
  }
}

Annotazioni

Quando si usa APPLICATIONINSIGHTS_AUTHENTICATION_STRING con Authorization=AAD, è necessario assegnare anche il ruolo Monitoring Metrics Publisher all'identità gestita dell'app per le funzioni nella risorsa di Application Insights.

Per esempi completi di Bicep, consulta gli esempi Flex Consumption Bicep.

Riconciliazione delle distribuzioni delle risorse dopo la migrazione

Se si usa l'infrastruttura come codice per gestire le distribuzioni di risorse Azure, aggiornare i file di distribuzione dopo la migrazione a Flex Consumption per evitare la deriva della configurazione. Ecco un approccio consigliato:

  1. Non combinare distribuzioni manuali e basate sulle risorse: se è stato usato il interfaccia della riga di comando di Azure o il portale per creare l'app Flex Consumption durante la migrazione, aggiornare i file di risorse prima della distribuzione successiva. In caso contrario, le implementazioni potrebbero tentare di ricreare le risorse del precedente piano a consumo.

  2. Aggiornare i nomi delle risorse o usare la gestione del ciclo di vita: poiché non è possibile convertire un'app a consumo in un'app a consumo flessibile direttamente, sono disponibili due opzioni:

    • Nuovi nomi di risorse: aggiornare il codice di distribuzione per usare nuovi nomi per il piano di hosting e l'app per le funzioni. Questo approccio mantiene intatte le risorse precedenti fino a quando non si è certi che la migrazione abbia avuto esito positivo.
    • Importare le risorse esistenti: se si vogliono mantenere gli stessi nomi, eliminare prima le risorse precedenti, quindi consentire alla distribuzione di creare le nuove risorse Flex Consumption. In alternativa, importare le risorse create manualmente nello stato di Terraform usando terraform import oppure facendo riferimento alle risorse esistenti in Bicep.
  3. Verificare l'allineamento dello stato: dopo l'aggiornamento dei file di distribuzione, eseguire un'operazione di piano o di anteprima (terraform plan o az deployment group what-if) per verificare che non si verifichino modifiche impreviste.

  4. Aggiornare le pipeline CI/CD: se le pipeline di distribuzione fanno riferimento alla configurazione del piano a consumo precedente, aggiornarle in modo da usare le nuove definizioni delle risorse Flex Consumption e i metodi di distribuzione.

Suggerimento

Per ridurre al minimo le interruzioni, è consigliabile eseguire in parallelo sia l'app a consumo precedente che la nuova app Flex Consumption durante un periodo di transizione. Aggiorna la distribuzione per gestire al meglio la nuova app Flex Consumption, verifica che funzioni correttamente, quindi elimina le risorse della vecchia app Consumption sia da Azure che dai file di distribuzione.

Rimuovere l'app originale (facoltativo)

Suggerimento

Non c'è fretta qui. Tieni la tua app originale per alcuni giorni o settimane mentre verifichi che tutto funzioni. Il piano a consumo addebita solo in base all'utilizzo effettivo, quindi mantenere l'app vecchia (con trigger disabilitati) costa poco.

Quando si è certi che la nuova app funziona correttamente, è possibile pulire l'originale. Questo passaggio è facoltativo: alcuni team mantengono l'app precedente come riferimento o opzione di rollback.

Importante

Questa azione elimina l'applicazione originale per le funzioni. Il piano a consumo rimane intatto se altre app lo usano. Prima di procedere, assicurati di:

  • Eseguire correttamente la migrazione di tutte le funzionalità alla nuova app Flex Consumption.
  • Verificare che non venga indirizzato alcun traffico all'app originale.
  • Backup di tutti i log, la configurazione o i dati pertinenti che potrebbero essere necessari per riferimento.

La funzionalità di migrazione Copilot per Linux può rimuovere l'app originale quando sei pronto. Copilot sempre richiede la conferma esplicita prima di eliminare qualsiasi elemento. Usare questa richiesta:

delete my original consumption app <ORIGINAL_APP_NAME>

Strategie di risoluzione dei problemi e ripristino

La maggior parte delle migrazioni termina senza problemi. Se qualcosa non funziona come previsto, provare queste soluzioni per i problemi comuni:

Problema Soluzione
Problemi di prestazioni di avvio a freddo • Esaminare le impostazioni di concorrenza
• Verificare la presenza di dipendenze mancanti
Associazioni mancanti • Verificare i pacchetti di estensioni
• Aggiornare le configurazioni di associazione
Errori di autorizzazione • Controllare le assegnazioni di identità e le autorizzazioni dei ruoli
Problemi di connettività di rete • Convalidare le restrizioni di accesso e le impostazioni di rete
Manca "Application Insights" • Ricreare la connessione di Application Insights
L'avvio dell'app non riesce Vedere Procedure generali per la risoluzione dei problemi
I trigger non elaborano eventi Vedere Procedure generali per la risoluzione dei problemi

Se si verificano problemi durante la migrazione di un'app di produzione, provare a eseguire il rollback della migrazione all'app originale durante la risoluzione dei problemi.

Passaggi per la risoluzione dei problemi generali

Usare questi passaggi per i casi in cui la nuova app non viene avviata o i trigger di funzione non elaborano eventi:

  1. Nella pagina della nuova app nel portale Azure selezionare Diagnose e risolvere i problemi nel riquadro sinistro della pagina dell'app. Selezionare Disponibilità e prestazioni ed esaminare il rilevamento di Interruzioni o errori di app per le funzioni. Per ulteriori informazioni, consultare la panoramica sulla diagnostica di Funzioni di Azure.

  2. Nella pagina dell'app, selezionare Monitoraggio>Application Insights>Visualizza dati di Application Insights, quindi selezionare Indaga>Anomalie e controllare la presenza di eventuali eventi di guasto.

  3. Selezionare Log di monitoraggio> ed eseguire questa query Kusto per verificare la presenza di errori nelle tabelle seguenti:

    traces
        | where severityLevel == 3
        | where cloud_RoleName == "<APP_NAME>"
        | where timestamp > ago(1d)
        | project timestamp, message, operation_Name, customDimensions
        | order by timestamp desc
    

    In queste query sostituire <APP_NAME> con il nome della nuova app. Queste query verificano la presenza di errori nell'ultimo giorno (where timestamp > ago(1d)).

  4. Nella pagina dell'app selezionare Impostazioni Variabili>di ambiente e verificare che tutte le impostazioni dell'applicazione critiche vengano trasferite correttamente. Cercare eventuali impostazioni deprecate che potrebbero essere migrate non correttamente o errori di digitazione o stringhe di connessione errate. Verificare la connessione di archiviazione host predefinita.

  5. Selezionare Impostazioni>Identità e verificare che le identità previste esistano e che siano assegnate ai ruoli corretti.

  6. Nel tuo codice, verifica che tutte le configurazioni di associazione siano corrette, prestando particolare attenzione ai nomi delle stringhe di connessione, alla coda di archiviazione e ai nomi dei contenitori, e alle impostazioni del gruppo di consumatori nei trigger di Event Hubs.

Passaggi di rollback per le app di produzione critiche

Se non è possibile risolvere il problema, provare a ripristinare l'app originale mentre si continua a risolvere i problemi.

  1. Se l'app originale viene arrestata, riavviarla:

    Chiedi a Copilot di riavviare l'app originale e annullare la migrazione.

    restart my original consumption app <ORIGINAL_APP_NAME>
    
  2. Se sono state create nuove code, argomenti o contenitori, assicurarsi che i client vengano reindirizzati alle risorse originali.

  3. Se sono stati modificati domini DNS o personalizzati, ripristinare queste modifiche in modo che puntino all'app originale.

Fornire commenti e suggerimenti

Se si verificano problemi con la migrazione usando questo articolo o si vuole fornire altri commenti e suggerimenti su queste indicazioni, usare uno di questi metodi per ottenere assistenza o fornire commenti e suggerimenti: