Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure Developer CLI (azd) supporta le distribuzioni di codice e contenitori in Funzioni di Azure. Usare l'host dedicato function in azure.yaml per entrambe le modalità:
- Distribuzione del codice crea un pacchetto di codice della funzione compilato come archivio ZIP e lo carica nell'app per le funzioni.
- Distribuzione del contenitore compila o risolve un'immagine del contenitore, la pubblica in Registro Azure Container (ACR) quando necessario e aggiorna la Function App per eseguire l'immagine.
Funzioni di Azure e Servizio app di Azure usano entrambi il Microsoft.Web/sites provider di risorse e i flussi di distribuzione dei contenitori condividono alcuni meccanismi interni. Tuttavia, non si tratta dello stesso azd host. Functions usano host: function, hanno pacchetti specifici di Functions e comportamento di compilazione remota e non usano il flusso di lavoro dello slot di distribuzione di App Service.
Scegli una modalità di distribuzione
azd seleziona la modalità di distribuzione dalla configurazione del servizio:
| Configurazione | Modalità di distribuzione |
|---|---|
Una sorgente project con un non Docker language supportato e nessuna docker.path |
Distribuzione del codice |
language: docker |
Distribuzione del contenitore |
Un valore docker.path con una lingua di origine |
Distribuzione del contenitore |
Precompilato image |
Distribuzione del contenitore |
La Function App di cui è stato effettuato il provisioning deve usare la stessa modalità della configurazione del servizio. Se l'app per le funzioni è configurata per i contenitori ma azure.yaml seleziona la distribuzione del codice o viceversa, azd deploy si arresta prima del caricamento e segnala la mancata corrispondenza.
Eseguire il deploy del codice funzione
Configurare un servizio di funzioni basato su codice con un progetto di origine, un linguaggio supportato e host: function:
services:
api:
project: ./src/api
language: ts
host: function
Durante azd deploy, azd compila il progetto, applica le .funcignore esclusioni, crea un archivio ZIP e carica il pacchetto tramite l'API di distribuzione Funzioni di Azure.
Bicep o Terraform devono effettuare il provisioning di un'app per le funzioni basata su codice e contrassegnarla con azd-service-name impostato sul nome del servizio, a meno che non si identifichi la risorsa usando resourceName in azure.yaml. Configurare il piano di hosting, il runtime, l'archiviazione, le identità, la rete e le impostazioni dell'applicazione tramite l'infrastruttura come codice.
Configurare compilazioni remote per i deployment di codice
La proprietà di servizio remoteBuild di primo livello si applica solo alle Function Apps basate su codice nel piano Flex Consumption. Controlla se Funzioni di Azure usa Oryx per compilare il pacchetto caricato:
services:
api:
project: ./src/api
language: python
host: function
remoteBuild: true
Quando si omette remoteBuild in Flex Consumption, azd seleziona un valore predefinito in base alla lingua e al contenuto del pacchetto:
| Language | Comportamento predefinito |
|---|---|
| JavaScript o TypeScript | Usa la compilazione remota quando .funcignore esclude node_modules, o quando non esiste alcun file .funcignore. In caso contrario, usa il pacchetto compilato in locale. |
| Python | Usa la compilazione remota. |
| Go | Compila in locale. Le Function Apps Go non supportano la compilazione remota. |
| Altre lingue supportate | Usa il pacchetto generato localmente. |
Per JavaScript e TypeScript, un valore configurato remoteBuild in modo esplicito deve essere coerente con .funcignore quando tale file esiste. Impostare remoteBuild: true quando .funcignore esclude node_modules. Impostare remoteBuild: false quando .funcignore include node_modules nel pacchetto.
Non impostare la proprietà remoteBuild di primo livello per i piani non Flex. Per abilitare una build Oryx in un altro piano supportato, configurare ENABLE_ORYX_BUILD=true e SCM_DO_BUILD_DURING_DEPLOYMENT=true come impostazioni di Function App nell'infrastruttura.
Distribuire una funzione containerizzata
Per un progetto di origine con un Dockerfile, impostare language: dockero mantenere la lingua di origine e specificare docker.path.
L'esempio seguente usa un progetto TypeScript con un Dockerfile:
services:
api:
project: ./src/api
language: ts
host: function
docker:
path: ./Dockerfile
È anche possibile distribuire un'immagine predefinita senza un progetto locale:
services:
api:
host: function
image: myregistry.azurecr.io/functions/api:1.0
Per un'immagine predefinita, omettere language o impostarla su docker. Non combinare image con project.
Durante una distribuzione del contenitore, azd:
- Crea l'immagine in locale o in remoto oppure risolve l'immagine precompilata configurata.
- Pubblica l'immagine nell'istanza di ACR configurata per il progetto quando è necessaria la pubblicazione.
- Aggiorna
linuxFxVersiondell'app per le funzioni aDOCKER|<image>. - Esegue la distribuzione nel sito principale della Function App.
La proprietà del servizio remoteBuild di primo livello non si applica ai contenitori. Per compilare un'immagine del contenitore con ACR Tasks, usare docker.remoteBuild:
services:
api:
project: ./src/api
language: docker
host: function
docker:
path: ./Dockerfile
remoteBuild: true
Effettuare il provisioning di una Function App pronta per i contenitori
azd deploy aggiorna il riferimento all'immagine, ma non converte una Function App basata su codice in una Function App basata su contenitore. L'infrastruttura deve effettuare il provisioning di un sito compatibile prima della distribuzione.
| Requirement | dettagli |
|---|---|
| Function App Linux | Effettuare il provisioning di un'app per funzioni Linux in un piano Funzioni di Azure Premium o Dedicated (servizio app). Flex Consumption non supporta i contenitori personalizzati. Questo host: function flusso di lavoro è destinato a Microsoft.Web/sites, non ad Funzioni di Azure ospitate in App contenitore di Azure. |
| Configurazione del sito del contenitore | Impostare il tipo di sito per includere functionapp, linuxe container. Inizializzare linuxFxVersion con un DOCKER\|<image> valore. Un'immagine segnaposto è sufficiente perché azd deploy la sostituisce. |
| Registro dei Container | Per le compilazioni di origine, effettuare il provisioning di un'istanza di ACR ed esporre il server di login tramite l'output dell'infrastruttura AZURE_CONTAINER_REGISTRY_ENDPOINT o configurare docker.registry per il servizio. È possibile usare direttamente un image prebuilt completamente qualificato senza un registro di pubblicazione separato. |
| Accesso al Registro di sistema | Concedere all'identità che pubblica l'immagine l'autorizzazione per eseguire il push nel registro di destinazione quando è necessaria la pubblicazione. Separatamente, configurare la Function App per eseguire il pull dell'immagine distribuita. Per le immagini private di Azure Container Registry (ACR), concedere all'identità gestita della Function App l'accesso pull e configurare il sito per utilizzare le credenziali dell'identità gestita. Per un altro registro privato, configurare le credenziali pull appropriate nell'infrastruttura. |
| Impostazioni della funzione | Configurare le impostazioni necessarie, come FUNCTIONS_EXTENSION_VERSION, FUNCTIONS_WORKER_RUNTIME e AzureWebJobsStorage, tramite Bicep o Terraform. |
| Individuazione risorse | Applica un tag azd-service-name il cui valore corrisponde al nome del servizio in azure.yaml, oppure imposta resourceName esplicitamente. |
Le impostazioni a livello env di servizio non sono supportate per l'host function . Definire invece le impostazioni di Function App nell'infrastruttura.
Comprendere gli slot di distribuzione
azd effettua sempre il deployment di un servizio function nel sito principale di Function App. Non rileva, non chiede di specificare o distribuisce negli slot di Function App. Le impostazioni dello slot di App Service, ad esempio AZD_DEPLOY_{SERVICE}_SLOT_NAME, non influiscono sulla distribuzione di una Function App.
Se è necessario un processo di rilascio di Functions basate su slot, gestire lo slot e la distribuzione all'esterno del flusso di lavoro predefinito host: function.
Confrontare Functions e host di App Service
Funzioni e App Service condividono il Microsoft.Web/sites tipo di risorsa, ma selezionare l'host che corrisponde al carico di lavoro:
| Behavior |
function host |
appservice host |
|---|---|---|
| Carico di lavoro | Funzioni di Azure basate su eventi | App Web e API |
| Distribuzione del codice | Usa il flusso di distribuzione ZIP di Funzioni di Azure | Usa il flusso di distribuzione di App Service |
| Distribuzione del contenitore | Aggiorna l'immagine di Function App dopo aver verificato che il sito sia basato su contenitori | Aggiorna l'immagine dell'app Web dopo aver verificato che il sito sia pronto per il container |
| Compilazione remota del codice | Supporta l'opzione a livello di servizio remoteBuild per Function Apps Flex Consumption |
Non usa l'opzione Functions remoteBuild |
| Slot di implementazione | Esegue sempre il deployment nel sito principale | Supporta il flusso di lavoro dello slot di azd App Service |
Livello di servizio env |
Non supportato; usare le impostazioni di Function App nell'infrastruttura | Configurare le impostazioni dell'app nell'infrastruttura |
Contenuti correlati
- Opzioni di hosting di Funzioni di Azure
- Creare funzioni in contenitori personalizzati
- Informazioni di riferimento sullo schema dell'interfaccia della riga di comando per sviluppatori Azure
- Configurare le esclusioni dei file di pacchettizzazione del servizio
- Usare il supporto docker per distribuire app in contenitori in qualsiasi lingua