Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Azure Developer CLI (azd) suporta implementação de código e implementações de contentores para Funções do Azure. Utilize o host dedicado function em azure.yaml para ambos os modos:
- Implementação de código empacota o código da função compilado como um arquivo zip e carrega-o para a Function App.
- A implementação de contentores constrói ou resolve uma imagem de contentor, publica-a no Azure Container Registry (ACR) quando necessário e atualiza a Function App para executar a imagem.
Funções do Azure e Serviço de Aplicações do Azure usam ambos o fornecedor de recursos Microsoft.Web/sites, e os seus fluxos de implementação de contentores partilham algumas mecânicas internas. No entanto, não são o mesmo azd host. O Functions utiliza host: function, tem um empacotamento específico das Funções e comportamento de compilação remota, e não utiliza o fluxo de trabalho do slot de implementação do App Service.
Escolha um modo de implantação
azd seleciona o modo de implementação a partir da configuração do serviço:
| Configuration | Modo de implantação |
|---|---|
Uma fonte project com um não Docker suportado language e sem docker.path |
Implementação de código |
language: docker |
Implantação de contêiner |
Um docker.path valor com uma língua de origem |
Implantação de contêiner |
Um modelo pré-construído image |
Implantação de contêiner |
A Function App provisionada deve usar o mesmo modo da configuração do serviço. Se a Function App estiver configurada para containers mas azure.yaml selecionar deployment de código, ou o inverso, azd deploy para antes de carregar e reporta a incompatibilidade.
Implementar código da função
Configure um serviço de funções baseado em código com um projeto fonte, linguagem suportada e host: function:
services:
api:
project: ./src/api
language: ts
host: function
Durante azd deploy, azd constrói o projeto, aplica .funcignore exclusões, cria um arquivo zip e carrega o pacote através da API de implantação do Funções do Azure.
O seu Bicep ou Terraform deve provisionar uma aplicação de funções baseada em código e marcá-la com azd-service-name definido para o nome do serviço, a menos que identifique o recurso usando resourceName em azure.yaml. Configure o plano de alojamento, tempo de execução, armazenamento, identidades, rede e definições da aplicação através da infraestrutura como código.
Configurar compilações remotas para implantações de código
A propriedade de serviço remoteBuild de topo aplica-se apenas a Function Apps baseadas em código no plano Flex Consumption. Controla se o Funções do Azure utiliza o Oryx para construir o pacote carregado:
services:
api:
project: ./src/api
language: python
host: function
remoteBuild: true
Quando omite remoteBuild no Flex Consumption, azd seleciona um padrão com base na linguagem e no conteúdo do pacote:
| Linguagem | Comportamento padrão |
|---|---|
| JavaScript ou TypeScript | Usa compilação remota quando .funcignore exclui node_modules, ou quando não existe ficheiro .funcignore . Caso contrário, usa o pacote criado localmente. |
| Python | Utiliza compilação remota. |
| Go | Compila localmente. As Function Apps do Go não suportam compilação remota. |
| Outras línguas suportadas | Usa o pacote construído localmente. |
Para JavaScript e TypeScript, um valor explicitamente configurado remoteBuild deve concordar com .funcignore quando esse ficheiro existe. Defina remoteBuild: true quando .funcignore exclui node_modules. Defina remoteBuild: false quando .funcignore inclui node_modules no pacote.
Não defina a propriedade de nível superior remoteBuild para planos que não sejam Flex. Para ativar uma build do Oryx noutro plano suportado, configure ENABLE_ORYX_BUILD=true e SCM_DO_BUILD_DURING_DEPLOYMENT=true como as definições da Function App na sua infraestrutura.
Implementar uma função containerizada
Para um projeto de origem com um Dockerfile, defina language: docker, ou mantenha a linguagem de origem e especifique docker.path.
O exemplo seguinte utiliza um projeto TypeScript com um Dockerfile:
services:
api:
project: ./src/api
language: ts
host: function
docker:
path: ./Dockerfile
Também pode implementar uma imagem pré-construída sem um projeto local:
services:
api:
host: function
image: myregistry.azurecr.io/functions/api:1.0
Para uma imagem pré-construída, omita language ou defina-a para docker. Não combine image com project.
Durante a implantação de um contentor, azd:
- Constrói a imagem local ou remotamente, ou resolve a imagem pré-construída configurada.
- Publica a imagem para a instância ACR configurada para o projeto quando a publicação for necessária.
- Atualiza a
linuxFxVersionda Function App paraDOCKER|<image>. - Implementa-se no site principal da Function App.
A propriedade de serviço remoteBuild de topo não se aplica a contentores. Para construir uma imagem de contentor com ACR Tasks, use docker.remoteBuild:
services:
api:
project: ./src/api
language: docker
host: function
docker:
path: ./Dockerfile
remoteBuild: true
Criar uma aplicação de funções pronta para contentores
azd deploy atualiza a referência da imagem, mas não converte uma Function App baseada em código numa Function App baseada em container. A sua infraestrutura deve provisionar um site compatível antes da implementação.
| Requirement | Details |
|---|---|
| Aplicação Function App do Linux | Aprovisione uma aplicação Function do Linux num plano Funções do Azure Premium ou Dedicado (App Service). Flex Consumption não suporta contentores personalizados. Este host: function fluxo de trabalho destina-se Microsoft.Web/sites, não Funções do Azure alojado no Azure Container Apps. |
| Configuração do site do container | Defina o tipo de site para incluir functionapp, linux, e container. Inicialize linuxFxVersion com um valor DOCKER\|<image>. Uma imagem provisória é suficiente porque azd deploy a substitui. |
| Registro de Contêineres | Para builds de código-fonte, provisiona uma instância ACR e expõe o seu servidor de login através do output de infraestrutura AZURE_CONTAINER_REGISTRY_ENDPOINT, ou configura docker.registry para o serviço. Um pré-compilado image totalmente qualificado pode ser usado diretamente, sem necessidade de um registry de publicação separado. |
| Acesso ao registo | Conceda à identidade que publica a imagem permissão para enviar para o registo de destino quando a publicação for necessária. Separadamente, configure a Function App para obter a imagem implementada. Para imagens privadas de ACR, conceda à identidade gerida da Function App permissões de extração e configure o site para usar credenciais de identidade gerida. Para outro registo privado, configure as credenciais de pull apropriadas na sua infraestrutura. |
| Definições de função | Configure as definições necessárias como FUNCTIONS_EXTENSION_VERSION, FUNCTIONS_WORKER_RUNTIME, e AzureWebJobsStorage através do Bicep ou Terraform. |
| Descoberta de recursos | Aplique uma azd-service-name etiqueta cujo valor corresponda ao nome do serviço em azure.yaml, ou defina resourceName explicitamente. |
As definições de nível env de serviço não são suportadas no host function. Defina as definições da Function App na sua infraestrutura, em vez disso.
Compreender os slots de implantação
azd faz sempre a implementação de um function serviço no site principal da Function App. Não descobre, não solicita nem efetua a implementação para slots de Function App. Definições de slot de Serviço de Aplicações, como AZD_DEPLOY_{SERVICE}_SLOT_NAME, não afetam a implantação de uma Function App.
Se precisar de um processo de lançamento de Funções baseado em slots, gere o slot e a implantação fora do fluxo de trabalho incorporado host: function .
Comparar Functions e anfitriões do App Service
Funções e App Service partilham o tipo de recurso Microsoft.Web/sites, mas selecionam o anfitrião que corresponde à carga de trabalho:
| Behavior |
function anfitrião |
appservice anfitrião |
|---|---|---|
| Carga de trabalho | Event-driven Funções do Azure | Aplicações web e APIs |
| Implementação de código | Utiliza o fluxo de deployment zip do Funções do Azure | Utiliza o fluxo de implementação do App Service |
| Implantação de contêiner | Atualiza a imagem da Function App após validar que o site é baseado em contentores | Atualiza a imagem da aplicação Web após validar que o site está pronto para contentores |
| Compilação remota de código | Suporta a opção de nível remoteBuild de serviço para Function Apps de Consumo Flex |
Não usa a opção Functions remoteBuild |
| Espaços de implantação | Instala sempre no site principal | Suporta o azd fluxo de trabalho de slot do App Service |
Nível de serviço env |
Não suportado; usar as definições da Function App na infraestrutura | Configurar as definições da aplicação na infraestrutura |