Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
CLI do Desenvolvedor do Azure (azd) dá suporte a implantações de código e contêiner para Azure Functions. Use o host dedicado function em azure.yaml para ambos os modos:
- A implantação de código empacota seu código da função compilado como um arquivo zip e o carrega no Function App.
- A implantação de contêiner cria ou resolve uma imagem de contêiner, a publica no ACR (Registro de Contêiner do Azure) quando necessário e atualiza o Aplicativo de Funções para executar a imagem.
Azure Functions e Serviço de Aplicativo do Azure usam o Microsoft.Web/sites provedor de recursos e seus fluxos de implantação de contêiner compartilham algumas mecânicas internas. No entanto, eles não estão no mesmo host azd. O Functions usa host: function, tem o empacotamento específico do Functions e o comportamento de build remoto e não usa o fluxo de trabalho de slot de implantação do Serviço de Aplicativo.
Escolher um modo de implantação
azd seleciona o modo de implantação a partir da configuração do serviço:
| Configuration | Modo de implantação |
|---|---|
Uma fonte project com um language não Docker compatível e sem docker.path |
Implementação de código |
language: docker |
Implantação de contêiner |
Um docker.path valor com um idioma de origem |
Implantação de contêiner |
Um item predefinido image |
Implantação de contêiner |
O Function App provisionado deve usar o mesmo modo que a configuração de serviço. Se o Aplicativo de Funções estiver configurado para contêineres, mas azure.yaml selecionar a implantação de código ou o inverso, azd deploy para antes de carregar e relata a incompatibilidade.
Implantar o código de função
Configure um serviço de função baseado em código com um projeto de origem, linguagem com suporte e host: function:
services:
api:
project: ./src/api
language: ts
host: function
Durante azd deploy, azd compila o projeto, aplica exclusões de .funcignore, cria um arquivo zip e carrega o pacote por meio da API de implantação do Azure Functions.
Seu Bicep ou Terraform deve provisionar um Aplicativo de Funções baseado em código e marcá-lo com azd-service-name definido como o nome do serviço, a menos que você identifique o recurso usando resourceName em azure.yaml. Configure o plano de hospedagem, o runtime, o armazenamento, as identidades, a rede e as configurações do aplicativo por meio da infraestrutura como código.
Configurar builds remotos para implantações de código
A propriedade de nível superior remoteBuild aplica-se apenas a Aplicativos de funções baseados em código no plano Consumo Flexível. Ele controla se Azure Functions usa o Oryx para criar o pacote carregado:
services:
api:
project: ./src/api
language: python
host: function
remoteBuild: true
Quando você omite remoteBuild no Consumo Flex, azd seleciona um padrão com base no idioma e no conteúdo do pacote:
| Linguagem | Comportamento padrão |
|---|---|
| JavaScript ou TypeScript | Usa o build remoto quando .funcignore exclui node_modules, ou quando nenhum arquivo .funcignore existe. Caso contrário, usa o pacote criado localmente. |
| Python | Usa o build remoto. |
| Go | Compila localmente. Os Go Function Apps não dão suporte ao build remoto. |
| Outros idiomas suportados | Usa o pacote criado localmente. |
Para JavaScript e TypeScript, um valor explicitamente configurado remoteBuild deve corresponder a .funcignore quando esse arquivo existe. Definir remoteBuild: true quando .funcignore excluir node_modules. Defina remoteBuild: false quando .funcignore incluir node_modules no pacote.
Não defina a propriedade remoteBuild de nível superior para planos não Flex. Para habilitar um build oryx em outro plano com suporte, defina ENABLE_ORYX_BUILD=true e SCM_DO_BUILD_DURING_DEPLOYMENT=true como configurações do Aplicativo de Funções em sua infraestrutura.
Implantar uma função conteinerizada
Para um projeto de origem com um Dockerfile, defina language: dockerou mantenha o idioma de origem e especifique docker.path.
O exemplo a seguir usa um projeto TypeScript com um Dockerfile:
services:
api:
project: ./src/api
language: ts
host: function
docker:
path: ./Dockerfile
Você também pode implantar uma imagem predefinida sem um projeto local:
services:
api:
host: function
image: myregistry.azurecr.io/functions/api:1.0
Para uma imagem predefinida, omita language ou defina-a como docker. Não combine image com project.
Durante uma implantação de contêiner, azd:
- Cria a imagem local ou remotamente, ou localiza a imagem predefinida configurada.
- Publica a imagem na instância do ACR configurada para o projeto quando a publicação é necessária.
- Atualiza o
linuxFxVersiondo Function App paraDOCKER|<image>. - Implanta no site principal do Function App.
A propriedade de serviço remoteBuild de nível superior não se aplica a contêineres. Para criar uma imagem de contêiner com tarefas do ACR, use docker.remoteBuild:
services:
api:
project: ./src/api
language: docker
host: function
docker:
path: ./Dockerfile
remoteBuild: true
Criar um Function App habilitado para contêiner
azd deploy atualiza a referência de imagem, mas não converte um Aplicativo de Funções baseado em código em um aplicativo de funções baseado em contêiner. Sua infraestrutura deve provisionar um site compatível antes da implantação.
| Requirement | Details |
|---|---|
| Aplicativo de funções do Linux | Provisione um Aplicativo de Funções do Linux em um plano Azure Functions Premium ou Dedicado (Serviço de Aplicativo). O Consumo Flex não dá suporte a contêineres personalizados. Esse host: function fluxo de trabalho destina-se a Microsoft.Web/sites, não às Azure Functions hospedadas no Aplicativos de Contêiner do Azure. |
| Configuração do site de contêineres | Defina o tipo de site para incluir functionapp, linuxe container. Inicialize linuxFxVersion com um valor DOCKER\|<image>. Uma imagem de espaço reservado é suficiente porque azd deploy a substitui. |
| Registro de contêiner | Para compilações de origem, provisione uma instância do ACR e exponha seu servidor de logon por meio da saída da infraestrutura AZURE_CONTAINER_REGISTRY_ENDPOINT ou configure docker.registry para o serviço. Um pré-construído image totalmente qualificado pode ser usado diretamente sem um registry de publicação separado. |
| Acesso ao Registro | Conceda à identidade que publica a imagem a permissão para enviar por push para o registro de destino quando a publicação for necessária. Separadamente, configure o Function App para efetuar pull da imagem implantada. Para imagens privadas do ACR, conceda à identidade gerenciada do Aplicativo de Funções acesso de pull e configure o site para usar credenciais de identidade gerenciada. Para outro registro privado, configure as credenciais de pull apropriadas em sua infraestrutura. |
| Configurações de funções | Defina as configurações necessárias, como FUNCTIONS_EXTENSION_VERSION, FUNCTIONS_WORKER_RUNTIMEe AzureWebJobsStorage por meio de Bicep ou Terraform. |
| Descoberta de recursos | Aplique uma marca azd-service-name cujo valor corresponde ao nome do serviço em azure.yaml, ou defina resourceName explicitamente. |
Não há suporte para configurações de nível env de serviço para o function host. Defina as configurações do Aplicativo de Funções em sua infraestrutura, em vez disso.
Entender os slots de implantação
azd sempre implanta um function serviço no site principal do Function App. Ele não descobre, solicita informações sobre nem implanta em slots do Function App. As configurações de slot do App Service, como AZD_DEPLOY_{SERVICE}_SLOT_NAME, não afetam uma implantação do Function App.
Se você precisar de um processo de versão do Functions baseado em slot, gerencie o slot e a implantação fora do fluxo de trabalho interno host: function .
Compare os hosts do Functions e de Serviço de Aplicativo
As funções e o Serviço de Aplicativo compartilham o Microsoft.Web/sites tipo de recurso, mas selecione o host que corresponde à carga de trabalho:
| Behavior |
function host |
appservice host |
|---|---|---|
| Carga de Trabalho | Azure Functions orientadas a eventos | APIs e aplicativos Web |
| Implementação de código | Usa o fluxo de implantação zip Azure Functions | Usa o fluxo de implantação do App Service |
| Implantação de contêiner | Atualiza a imagem do Function App depois de validar que o site é baseado em contêiner | Atualiza a imagem do Aplicativo Web depois de validar que o site está pronto para contêineres |
| compilação remota de código | Dá suporte à opção de nível de serviço remoteBuild para Flex Consumption Function Apps |
Não usa a opção Functions remoteBuild |
| Slots de implantação | Sempre realiza a implantação no site principal | Dá suporte ao fluxo de trabalho de slot do azd App Service |
Nível de serviço env |
Sem suporte; usar as configurações do Function App na infraestrutura | Configurar configurações do aplicativo na infraestrutura |