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 você não tiver uma conta, é possível 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. Selecione 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 é preenchida previamente com sua seleção na seção anterior.
    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 cadeia de conexão ou identidade gerenciada para essas variáveis. Use a identidade gerenciada.

    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 do Functions

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 na az containerapp CLI do Azure ou cmdlets do módulo Az.App no PowerShell, verifique se a versão mais recente da extensão Aplicativos de Contêiner do Azure está 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ário de multirrevisão

    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.