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.
Em Azure, você pode executar suas funções diretamente de um arquivo de pacote de implantação em seu aplicativo de funções. A outra opção é implantar seus arquivos no diretório c:\home\site\wwwroot (Windows) ou /home/site/wwwroot (Linux) do seu aplicativo de funções.
Este artigo descreve os benefícios de executar suas funções de um pacote. Ele também mostra como habilitar essa funcionalidade em seu aplicativo de funções.
Benefícios da execução de um arquivo de pacote
Há vários benefícios na execução de funções a partir de um arquivo de pacote:
- Reduz o risco de problemas de bloqueio de cópia de arquivo.
- Pode ser implantado em um aplicativo de produção (com reinicialização).
- Verifica os arquivos que estão em execução no seu aplicativo.
- Melhora o desempenho de implantações Azure Resource Manager.
- Reduz os tempos de inicialização a frio, particularmente para as funções de JavaScript com árvores de pacote npm grandes.
Habilitar funções para execução por meio de um pacote
Os aplicativos de função no plano de hospedagem Consumo Flexível são executados a partir de um pacote por padrão. Nenhuma configuração especial precisa ser definida.
Para permitir que seu aplicativo de função seja executado a partir de um pacote nos planos de hospedagem Consumo, Elástico Premium e Dedicado (Serviço de Aplicativo), adicione uma WEBSITE_RUN_FROM_PACKAGE configuração de aplicativo ao seu aplicativo de função. O configuração WEBSITE_RUN_FROM_PACKAGE do app pode ter um dos seguintes valores:
| Valor | Descrição |
|---|---|
1 |
Indica que o aplicativo de funções é executado a partir de um arquivo de pacote local implantado na pasta c:\home\data\SitePackages (Windows) ou /home/data/SitePackages (Linux) do seu aplicativo de funções. Essa é a opção padrão quando você usa Azure Functions Core Tools. |
<URL> |
Define uma URL que é a localização remota do arquivo de pacote específico que você deseja executar. Necessária para aplicativos de funções em execução no Linux em um plano de Consumo. |
A seguinte tabela indica as opções de valores WEBSITE_RUN_FROM_PACKAGE recomendados para implantação em um sistema operacional e um plano de hospedagem específicos:
| Plano de hospedagem | Windows | Linux |
|---|---|---|
| Consumo |
1 é altamente recomendado. |
Apenas <URL> tem suporte. |
| Prêmio |
1 é recomendado. |
1 é recomendado. |
| Dedicado |
1 é recomendado. |
1 é recomendado. |
Considerações gerais
- Não adicione a configuração de aplicativo
WEBSITE_RUN_FROM_PACKAGEaos aplicativos do plano Consumo Flexível. - O arquivo de pacote precisa ser formatado em .zip. Não há suporte para os formatos Tar nem gzip.
- A implantação do Zip é recomendada.
- Ao implantar seu aplicativo de funções no Windows, você deve definir
WEBSITE_RUN_FROM_PACKAGEcomo1e publicar com a implantação de zip. - Quando você fizer a execução por meio de um pacote, a pasta
wwwrootse tornará somente leitura e você receberá um erro se gravar arquivos nesse diretório. Os arquivos também são somente leitura no portal do Azure. - O tamanho máximo de um arquivo de pacote de implantação é de 1 GB.
- A implantação usa armazenamento temporário quando desempacota os arquivos do projeto. Isso significa que seu aplicativo de função deve ter espaço de armazenamento temporário suficiente disponível para armazenar o conteúdo do pacote. Lembre que o limite de armazenamento temporário para um plano de Consumo é de 500 MB por plano. Para saber mais sobre como solucionar problemas com o armazenamento temporário, consulte Como solucionar problemas de armazenamento temporário em Serviço de Aplicativo do Azure.
- Não é possível usar o cache local durante a execução por um pacote de implantação.
- Se o projeto precisar usar o build remoto, não use a configuração de aplicativo
WEBSITE_RUN_FROM_PACKAGE. Em vez disso, adicione a configuração de aplicativoSCM_DO_BUILD_DURING_DEPLOYMENT=truede personalização da implantação. No Linux, adicione também a configuraçãoENABLE_ORYX_BUILD=true. Para obter mais informações, consulte Compilação Remota.
Observação
A WEBSITE_RUN_FROM_PACKAGE configuração do aplicativo não funciona com MSDeploy, conforme descrito no MSDeploy VS. ZipDeploy. Você recebe uma mensagem de erro durante a implantação, como ARM-MSDeploy Deploy Failed. Para solucionar o erro, mude /MSDeploy para /ZipDeploy.
Como adicionar a configuração WEBSITE_RUN_FROM_PACKAGE
Há várias maneiras de adicionar, atualizar e excluir configurações do aplicativo de funções:
As alterações nas configurações do aplicativo de funções exigem que o seu aplicativo de funções seja reiniciado.
Como criar arquivo zip
O arquivo zip que você implantar deve conter todos os arquivos necessários para executar seu aplicativo de funções. Você pode criar manualmente um arquivo zip com base no conteúdo de uma pasta de projeto do Functions usando a funcionalidade interna de compactação .zip ou ferramentas não Microsoft.
O arquivo compactado deve incluir o arquivo host.json na raiz da pasta extraída. A pilha de idiomas selecionada para o aplicativo de funções cria outros requisitos:
- .NET (modelo de trabalho isolado)
- .NET (modelo em execução)
- Java
- JavaScript
- TypeScript
- PowerShell
- Python
Importante
Para linguagens que geram saída compilada para publicação, certifique-se de compactar apenas o conteúdo da pasta de saída que pretende publicar, e não a pasta inteira do projeto. Quando o Functions extrai o conteúdo do arquivo zip, o arquivo host.json deve existir na raiz do pacote.
Usar WEBSITE_RUN_FROM_PACKAGE = 1
Esta seção fornece informações sobre como executar seu aplicativo de funções por meio de um arquivo de pacote local.
Considerações sobre a implantação por meio de um pacote local
- O uso de um pacote local é a opção recomendada para execução do pacote de implantação, exceto ao executar no Linux hospedado em um plano de Consumo.
- A implantação do Zip é a maneira recomendada de carregar um pacote de implantação no seu site.
- Ao não usar a implantação zip, verifique se a pasta
c:\home\data\SitePackages(Windows) ou/home/data/SitePackages(Linux) tem um arquivo chamadopackagename.txt. Esse arquivo contém apenas o nome, sem nenhum espaço em branco, do arquivo de pacote na pasta que está em execução no momento.
Integração com a implantação do zip
Implantação do zip é um recurso do Serviço de Aplicativo do Azure que permite que você implante seu projeto de aplicativo de função no diretório wwwroot. O projeto é empacotado como um arquivo de implantação .zip. As mesmas APIs podem ser usadas para implantar seu pacote na pasta c:\home\data\SitePackages (Windows) ou /home/data/SitePackages (Linux).
Quando você define o valor de configuração do aplicativo WEBSITE_RUN_FROM_PACKAGE como 1, as APIs de implantação zip copiam seu pacote para a pasta c:\home\data\SitePackages (Windows) ou /home/data/SitePackages (Linux) em vez de extrair os arquivos para c:\home\site\wwwroot (Windows) ou /home/site/wwwroot (Linux). Ele também cria o arquivo packagename.txt . Depois que o aplicativo de função for reiniciado automaticamente, o pacote será montado para wwwroot como um sistema de arquivos somente leitura. Para obter mais informações sobre a implantação zip, consulte Zip deployment for Azure Functions.
Observação
Quando ocorre uma implantação, uma reinicialização do aplicativo de funções é disparada. As execuções de função em execução durante a implantação são encerradas. Para obter informações sobre como escrever funções sem estado e defensivas, consulte Escrever funções sem estado.
Usar WEBSITE_RUN_FROM_PACKAGE = <URL>
Esta seção fornece informações sobre como executar seu aplicativo de funções por meio de um pacote implantado em um ponto de extremidade de URL. Essa opção é a única com suporte para execução por um pacote no Linux hospedado em um plano de Consumo. Essa opção não é suportada no plano Flex Consumption.
Considerações sobre a implantação por meio de uma URL
- Não defina
WEBSITE_RUN_FROM_PACKAGE = <URL>em aplicativos no Plano de Consumo Flexível. Não há suporte para essa opção. - Os aplicativos de funções em execução no Windows têm um pequeno aumento no tempo de inicialização a frio quando o pacote de aplicativos é implantado em um ponto de extremidade de URL por meio de
WEBSITE_RUN_FROM_PACKAGE = <URL>. - Ao especificar uma URL, você também precisa sincronizar gatilhos manualmente depois de publicar um pacote atualizado.
- O runtime do Functions precisa ter permissões para acessar a URL do pacote.
- Não implante seu pacote para Armazenamento de Blobs do Azure como um blob público. Em vez disso, use um contêiner privado com uma assinatura de acesso compartilhado (SAS) ou use uma identidade gerenciada para permitir que o runtime do Functions acesse o pacote.
- Mantenha todas as URLs SAS usadas para implantação. Quando uma SAS expira, o pacote não pode mais ser implantado. Nesse caso, você deve gerar uma nova SAS e atualizar a configuração no aplicativo de funções. Você pode eliminar essa carga de gerenciamento usando uma identidade gerenciada.
- Na execução em um plano Premium, lembre-se de eliminar a inicialização a frio.
- Ao executar um plano Dedicado, habilite a opção Sempre ativo.
- Você pode usar Gerenciador de Armazenamento do Azure para carregar arquivos de pacote para contêineres de blob em sua conta de armazenamento.
Carregando manualmente um pacote para Armazenamento de Blobs
Para implantar um pacote compactado ao usar a opção URL, crie um pacote de implantação .zip compactado e carregue-o no destino. O procedimento a seguir é implantado em um contêiner no Armazenamento de Blobs:
Crie um pacote .zip do projeto usando o utilitário de sua escolha.
No portal Azure, pesquise o nome da conta de armazenamento ou procure-o na lista de contas de armazenamento.
Na conta de armazenamento, selecione Contêineres em Armazenamento de dados.
Selecione + Contêiner para criar um novo contêiner de Armazenamento de Blobs em sua conta.
Na página Novo contêiner, insira um nome (por exemplo, implantações), certifique-se de que o nível de acesso anônimo seja privado e selecione Criar.
Selecione o contêiner criado, selecione Upload, navegue até o local do arquivo .zip criado com seu projeto e então selecione Upload.
Após a conclusão do upload, selecione o arquivo de blob carregado e copie a URL. Se você não estiver usando uma identidade gerenciada, pode ser necessário gerar uma URL SAS.
Pesquise pelo aplicativo de funções ou navegue até ele na página Aplicativo de funções.
Em seu aplicativo de funções, expanda Configurações e selecione Variáveis de ambiente.
Na guia Configurações de aplicativo, escolha + Adicionar.
Insira o valor
WEBSITE_RUN_FROM_PACKAGEpara o Name e cole a URL do pacote em Armazenamento de Blobs para o Value.Selecione Aplicar e, em seguida, Aplicar e Confirmar para salvar a configuração e reiniciar o aplicativo de função.
Agora você pode executar sua função em Azure para verificar se a implantação do pacote de implantação .zip arquivo foi bem-sucedida.
Buscar um pacote de Armazenamento de Blobs do Azure usando uma identidade gerenciada
Você pode configurar o Armazenamento de Blobs do Azure para autorizar solicitações com Microsoft Entra ID. Essa configuração significa que, em vez de gerar uma chave SAS com uma expiração, você pode usar a identidade gerenciada do aplicativo.
Por padrão, é usada a identidade do aplicativo atribuída pelo sistema. Se você quiser especificar uma identidade atribuída pelo usuário, defina a configuração de aplicativo WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID como a ID do recurso dessa identidade. A configuração também pode aceitar SystemAssigned como um valor, o que é o mesmo que omitir a configuração.
Para permitir que o pacote seja buscado usando a identidade:
Verifique se o blob está configurado para acesso privado.
Conceda à identidade à função Leitor de Dados do Blob do Armazenamento com escopo no blob do pacote. Consulte Atribuir uma função Azure para acesso aos dados de blob para obter detalhes sobre como criar a atribuição de função.
Defina a configuração de aplicativo
WEBSITE_RUN_FROM_PACKAGEcomo o URL do blob do pacote. Essa URL costuma ser do formuláriohttps://<storage-account-name>.blob.core.windows.net/<container-name>/<path-to-package>ou semelhante.Se você quiser especificar uma identidade atribuída pelo usuário, defina a configuração de aplicativo
WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_IDcomo a ID do recurso dessa identidade. A configuração também pode aceitar SystemAssigned como um valor, embora isso seja o mesmo que omitir a configuração completamente. Uma ID de recurso é uma representação padrão para um recurso em Azure. Para uma identidade gerenciada atribuída pelo usuário, isso será/subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name. O ID de recurso de uma identidade gerenciada atribuída pelo usuário pode ser obtido em Configurações>, Propriedades>, ID de identidade gerenciada atribuída pelo usuário.