Compartilhar via


Usar o Azure Functions nos Aplicativos de Contêiner do Azure

Este artigo mostra como criar um aplicativo do Azure Functions nos Aplicativos de Contêiner do Azure, com regras de dimensionamento automático pré-configuradas.

Pré-requisitos

Recurso Descrição
Conta do Azure Uma conta do Azure com uma assinatura ativa.

Se não tiver uma, poderá criar uma gratuitamente.
Conta de Armazenamento do Azure Uma conta de armazenamento de blobs para armazenar o estado de suas Funções do Azure.
Azure Application Insights Uma instância do Azure Application Insights para coletar dados sobre seu aplicativo de contêiner.

Criar um aplicativo do Functions

As etapas a seguir mostram como usar uma imagem de contêiner de exemplo para criar seu aplicativo de contêiner. Se você quiser usar esse procedimento com uma imagem de contêiner personalizada, consulte Criar seu primeiro aplicativo de funções nos Aplicativos de Contêiner do Azure.

  1. Acesse o portal do Azure e pesquise aplicativos de contêiner na barra de pesquisa.

  2. Selecione Aplicativos de Contêiner.

  3. Selecione Criar.

  4. Selecionar Aplicativo de Contêiner

  5. Na seção Noções básicas, insira os valores a seguir.

    Em Detalhes do projeto:

    Propriedade Valor
    Subscrição Selecione sua assinatura do Azure.
    Grupo de recursos Selecione Criar novo grupo de recursos, nomeie-o como my-aca-functions-group e selecione OK.
    Nome do aplicativo de contêiner Acesse my-aca-functions-app.
  6. Marque a caixa de seleção ao lado de Otimizar para o Azure Functions.

    Captura de tela do portal do Azure ao criar um aplicativo de contêiner pré-configurado para o Azure Functions.

  7. Em Ambiente de Aplicativos de Contêiner, insira:

    Propriedade Valor
    Região Selecione a região mais próxima de você.
    Ambiente de Aplicativos de Contêiner Selecione Criar novo ambiente.
  8. Na janela de configuração do ambiente, insira:

    Propriedade Valor
    Nome do ambiente Insira my-aca-functions-environment
    Redundância de zona Selecione Desabilitado.
  9. Selecione Criar para salvar seus valores.

  10. Selecione Avançar: Contêiner para alternar para a seção Contêiner .

  11. Ao lado de Usar a imagem de início rápido, deixe esta caixa desmarcada.

  12. Na seção Detalhes do contêiner , insira os valores a seguir.

    Propriedade Valor
    Nome Esta caixa está pré-preenchida com sua seleção na última seção.
    Fonte da imagem Selecione o Hub do Docker ou outros registros
    Subscrição Selecione sua assinatura.
    Tipo de Imagem Selecione Público.
    Servidor de logon do registro Insira mcr.microsoft.com
    Imagem e marca Insira k8se/quickstart-functions:latest
  13. Em Variáveis de ambiente, insira valores para as seguintes variáveis:

    • AzureWebJobsStorage
    • APPINSIGHTS_INSTRUMENTATIONKEY ou APPLICATIONINSIGHTS_CONNECTION_STRING

    Insira valores de identidade gerenciada ou cadeia de conexão para essas variáveis. A Identidade Gerenciada é recomendada.

    A variável AzureWebJobsStorage é uma cadeia de conexão obrigatória da conta de Armazenamento do Azure para Azure Functions. Essa conta de armazenamento armazena logs de execução de função, gerencia gatilhos e associações e mantém o estado para funções duráveis.

    O Application Insights é um serviço de monitoramento e diagnóstico que fornece insights sobre o desempenho e o uso do Azure Functions. Esse monitoramento ajuda você a acompanhar as taxas de solicitação, os tempos de resposta, as taxas de falha e outras métricas.

  14. Selecione Próximo > Ingress para alternar para a seção Ingress e insira os valores a seguir.

    Propriedade Valor
    Entrada Selecione a caixa de seleção Habilitada para habilitar a entrada.
    Tráfego de entrada Selecione Aceitar tráfego de qualquer lugar.
    Tipo de entrada Selecione HTTP.
    Porta de destino Insira 80.
  15. Selecione Examinar + criar.

  16. Selecione Criar.

  17. Após a conclusão da implantação, selecione Ir para o recurso.

  18. Na página Visão geral , selecione o link ao lado da URL do Aplicativo para abrir o aplicativo em uma nova guia do navegador.

  19. Acrescente /api/HttpExample ao final da URL.

    Uma mensagem informando que "a função de gatilho HTTP processou uma solicitação" é retornada no navegador.

Pré-requisitos

Criar um aplicativo de funções

Para entrar no Azure usando a CLIl, execute o comando a seguir e siga os prompts para concluir o processo de autenticação.

  1. Inicie sessão no Azure.

    az login
    
  2. Para garantir que você esteja executando a versão mais recente da CLI, execute o comando “upgrade”.

    az upgrade
    
  3. Instale ou atualize a extensão do Azure Container Apps para a CLI.

    Se você receber erros sobre parâmetros ausentes ao executar comandos az containerapp na CLI do Azure ou cmdlets do módulo Az.App no PowerShell, verifique se está usando a última versão da extensão Aplicativos de Contêiner do Azure instalada.

    az extension add --name containerapp --allow-preview true --upgrade
    
    
    

    Agora que a extensão ou módulo atual está instalado, registre os namespaces Microsoft.App e Microsoft.OperationalInsights.

    az provider register --namespace Microsoft.App
    
    az provider register --namespace Microsoft.OperationalInsights
    
  4. Criar variáveis de ambiente.

    RESOURCE_GROUP_NAME="my-aca-functions-group"
    CONTAINER_APP_NAME="my-aca-functions-app"
    ENVIRONMENT_NAME="my-aca-functions-environment"
    LOCATION="westus"
    STORAGE_ACCOUNT_NAME="storage-account-name"
    STORAGE_ACCOUNT_SKU="storage-account-sku"
    APPLICATION_INSIGHTS_NAME="application-insights-name"
    
  5. Crie um grupo de recursos.

    az group create \
      --name $RESOURCE_GROUP_NAME \
      --location $LOCATION \
      --output none
    
  6. Crie o ambiente dos Aplicativos de Contêiner.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION \
        --output none
    
  7. Criar a conta de armazenamento

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --sku $STORAGE_ACCOUNT_SKU
    
  8. Obter string de conexão da conta de armazenamento

    $STORAGE_ACCOUNT_CONNECTION_STRING = az storage account show-connection-string \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  9. Criar Application Insights no Azure

    az monitor app-insights component create \
    --app $APPLICATION_INSIGHTS_NAME \
    --location $LOCATION \
      --resource-group $RESOURCE_GROUP \
      --application-type web
    
  10. Adquirir string de conexão do Application Insights

    $APPLICATION_INSIGHTS_CONNECTION_STRING = az monitor app-insights component show \
      --app $APPLICATION_INSIGHTS_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  11. Crie um aplicativo de contêiner do Azure Functions.

    az containerapp create \
      --resource-group $RESOURCE_GROUP_NAME \
      --name $CONTAINER_APP_NAME \
      --environment $ENVIRONMENT_NAME \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0 \
      --ingress external \
      --target-port 80 \
      --kind functionapp \
      --query properties.outputs.fqdn
    

    Esse comando retorna a URL do aplicativo functions. Copie essa URL e cole-a em um navegador da Web.

  12. Criar um aplicativo de contêiner do Azure Functions com --revisions-mode multiple para cenários de múltiplas revisões

    az containerapp create \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $CONTAINERAPPS_ENVIRONMENT \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0 \
      --target-port 80 \
      --ingress external \
      --kind functionapp \
      --workload-profile-name $WORKLOAD_PROFILE_NAME \
      --env-vars AzureWebJobsStorage="$STORAGE_ACCOUNT_CONNECTION_STRING" APPLICATIONINSIGHTS_CONNECTION_STRING="$APPLICATION_INSIGHTS_CONNECTION_STRING"
    
  13. Para o cenário de multirrevisão, atualize o ContainerApp e divida o tráfego

    az containerapp update \
      --resource-group $RESOURCE_GROUP \
      --name $CONTAINERAPP_NAME \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:latest
    
    az containerapp ingress traffic set -resource-group \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --revision-weight {revision1_name}=50 \
      --revision-weight {revision2_name}=50
    
  14. Acrescente /api/HttpExample ao final da URL.

    Uma mensagem informando que "a função de gatilho HTTP processou uma solicitação" é retornada no navegador.

Gerenciar funções

Você pode gerenciar suas funções implantadas nos Aplicativos de Contêiner do Azure usando a CLI do Azure. Os comandos a seguir ajudam você a listar, inspecionar e interagir com as funções em execução em seu ambiente em contêineres.

Observação

Ao lidar com cenários de multirevisão, adicione o parâmetro --revision <REVISION_NAME> ao seu comando para direcionar uma revisão específica.

Listar funções

Exiba todas as funções implantadas em seu aplicativo de contêiner:

# List all functions
az containerapp function list \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME

Mostrar detalhes da função

Obtenha informações detalhadas sobre uma função específica:

az containerapp function show \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --function-name <FUNCTIONS_APP_NAME>

Monitorar invocações de função

Monitorar seu aplicativo de funções é essencial para entender seu desempenho e diagnosticar problemas. Os comandos a seguir mostram como recuperar URLs de função, disparar invocações e exibir resumos detalhados de telemetria e invocação usando a CLI do Azure. Certifique-se de invocar a função algumas vezes, curl -X POST "fqdn/api/HttpExample" antes de chamar os traces

  1. Para exibir rastreamentos de invocação, obtenha rastreamentos detalhados de invocações de função.

    az containerapp function invocations traces \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h \
      --limit 3
    
  2. Visualizar um resumo da invocação para examinar invocações bem-sucedidas e falhas.

    az containerapp function invocations summary \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h
    

Gerenciar chaves de função

O Azure Functions usa chaves para autenticação e autorização. Você pode gerenciar os seguintes tipos diferentes de chaves:

  • Chaves de host: acessar qualquer função no aplicativo
  • Chaves mestras: fornecer acesso administrativo
  • Chaves do sistema: usadas pelos serviços do Azure
  • Chaves de função: acessar funções específicas

Os comandos a seguir mostram como gerenciar chaves para o host. Para executar o mesmo comando para um aplicativo específico do Functions, adicione o --function-name <FUNCTIONS_APP_NAME> parâmetro ao seu comando.

Listar chaves

Use os comandos a seguir para listar chaves específicas de nível de host e de função para o Azure Functions em execução nos Aplicativos de Contêiner.

Observação

Mantenha um mínimo de uma réplica em execução para que os comandos de gerenciamento de chaves a seguir funcionem.

az containerapp function keys list \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --key-type hostKey

Mostrar uma chave específica

Mostre o valor de uma chave de nível de host específica para seu aplicativo de funções com o seguinte comando:

az containerapp function keys show \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --key-name <KEY_NAME> \
  --key-type hostKey

Definir uma chave

Defina uma chave de nível de host específica para seu aplicativo de funções com o seguinte comando:

az containerapp function keys set \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --key-name <KEY_NAME> \
  --key-value <KEY_VALUE> \
  --key-type hostKey