Partilhar via


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

Este artigo mostra como criar um aplicativo do Azure Functions em Aplicativos de Contêiner do Azure, completo 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, pode criar uma gratuitamente.
Conta de Armazenamento do Azure Uma conta de armazenamento de blob para armazenar o estado das suas Azure Functions.
Azure Application Insights Uma instância do Azure Application Insights para coletar dados sobre seu aplicativo de contêiner.

Criar um aplicativo 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 este procedimento com uma imagem de contêiner personalizada, consulte Criar seu primeiro aplicativo de função em Aplicativos de Contêiner do Azure.

  1. Vá para o portal do Azure e procure 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 seguintes valores.

    Em detalhes do projeto:

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

    Captura de ecrã do portal do Azure quando cria uma aplicação de contentor pré-configurada para o Azure Functions.

  7. Em Ambiente de aplicativos de contêiner, digite:

    Propriedade Valor
    Região Selecione a região mais próxima de si.
    Ambiente de aplicativos de contêiner Selecione Criar novo ambiente.
  8. Na janela de configuração do ambiente, digite:

    Propriedade Valor
    Nome do ambiente Entre em my-aca-functions-environment
    Redundância entre zonas selecione Desativado.
  9. Selecione Criar para salvar seus valores.

  10. Selecione Next: Container para alternar para a seção Container .

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

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

    Propriedade Valor
    Nome Esta caixa é pré-preenchida com a sua seleção na última secção.
    Fonte da imagem Selecione Docker Hub ou outros registros
    Subscrição Selecione a sua subscrição.
    Tipo de imagem Selecione Público.
    Servidor de login do Registro Insira mcr.microsoft.com
    Imagem e marcador Introduza 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. Identidade gerenciada é recomendada.

    A variável AzureWebJobsStorage é uma cadeia de conexão de conta de Armazenamento do Azure necessária para as Funções do Azure. Essa conta de armazenamento armazena logs de execução de funções, 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 informações sobre o desempenho e o uso do Azure Functions. Esse monitoramento ajuda você a controlar as taxas de solicitação, os tempos de resposta, as taxas de falha e outras métricas.

  14. Selecione Next > Ingress para alternar para a seção Ingress e insira os seguintes valores.

    Propriedade Valor
    Entrada Marque a caixa de seleção Habilitado para habilitar a entrada.
    Tráfego de entrada Selecione Aceitar tráfego de qualquer lugar.
    Tipo de ingresso Selecione HTTP.
    Porta de destino Digite 80.
  15. Selecione Avaliar + Criar.

  16. Selecione Criar.

  17. Quando a implantação estiver concluída, selecione Ir para o recurso.

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

  19. Anexe /api/HttpExample ao final do URL.

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

Pré-requisitos

Criar um aplicativo de funções

Para entrar no Azure a partir da CLI, execute o seguinte comando 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 Aplicativos de Contêiner do Azure para a CLI.

    Se receber erros relativos a parâmetros em falta ao executar comandos az containerapp na CLI do Azure ou cmdlets do módulo Az.App no PowerShell, assegure-se de ter a versão mais recente da extensão Azure Container Apps instalada.

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

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

    az provider register --namespace Microsoft.App
    
    az provider register --namespace Microsoft.OperationalInsights
    
  4. Crie 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 Container Apps.

    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. Adquirir a Cadeia 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 o Azure Application Insights

    az monitor app-insights component create \
    --app $APPLICATION_INSIGHTS_NAME \
    --location $LOCATION \
      --resource-group $RESOURCE_GROUP \
      --application-type web
    
  10. Adquirir a cadeia de ligaçã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
    

    Este comando devolve o URL da aplicação de Funções. Copie este URL e cole-o num navegador da Web.

  12. Crie uma aplicação contentor do Azure Functions com o modo de revisões definido para 'multiple' num cenário 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 cenários de multirevisão, atualize a 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. Anexe /api/HttpExample ao final do URL.

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

Gerir funções

Pode gerir as suas funções implementadas dentro das Azure Container Apps usando a CLI do Azure. Os comandos seguintes ajudam-no a listar, inspecionar e interagir com as funções que estão a correr no seu ambiente containerizado.

Observação

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

Funções relacionadas a listas

Veja todas as funções implementadas na sua aplicação de contentores:

# 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>

Invocações de funções de monitorização

Monitorizar a sua aplicação de funções é essencial para compreender o seu desempenho e diagnosticar problemas. Os comandos seguintes mostram-lhe como recuperar URLs de funções, acionar invocações e visualizar resumos detalhados de telemetria e invocações 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 visualizar os rastros de invocação, obtenha rastros detalhados das invocações de funções.

    az containerapp function invocations traces \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h \
      --limit 3
    
  2. Consulte um resumo de invocações para rever invocações bem-sucedidas e falhadas.

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

Gerenciar teclas de função

O Azure Functions utiliza chaves para autenticação e autorização. Pode gerir os seguintes tipos diferentes de chaves:

  • Chaves de anfitrião: Acede a qualquer função na aplicação
  • Chaves mestres: Fornecer acesso administrativo
  • Chaves do sistema: Utilizadas pelos serviços Azure
  • Teclas de função: Aceder a funções específicas

Os seguintes comandos mostram-lhe como gerir as chaves do anfitrião. Para executar o mesmo comando para uma aplicação Functions específica, adicione o --function-name <FUNCTIONS_APP_NAME> parâmetro ao seu comando.

Listar chaves

Utilize os seguintes comandos para listar as chaves de nível de host e específicas de função para as suas Azure Functions a correr em Container Apps.

Observação

Mantenha pelo menos uma réplica a correr para que os seguintes comandos de gestão de teclas funcionem.

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

Mostrar uma tecla específica

Mostre o valor de uma chave específica ao nível do host para a sua aplicação 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

Defina uma chave

Defina uma chave específica ao nível do host para a sua aplicação 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