Compartir vía


Uso de Azure Functions en Azure Container Apps

En este artículo se muestra cómo crear una aplicación de Azure Functions en Azure Container Apps, con reglas de escalado automático preconfiguradas.

Prerrequisitos

Recurso Descripción
Cuenta de Azure Una cuenta de Azure con una suscripción activa.

Si no tiene ninguna, puede crear una gratis.
Cuenta de Azure Storage Una cuenta de Blob Storage para almacenar el estado de Azure Functions.
Azure Application Insights Instancia de Azure Application Insights para recopilar datos sobre la aplicación contenedora.

Creación de una aplicación de Functions

En los pasos siguientes se muestra cómo usar una imagen de contenedor de ejemplo para crear la aplicación de contenedor. Si desea usar este procedimiento con una imagen de contenedor personalizada, consulte Creación de la primera aplicación de funciones en Azure Container Apps.

  1. Vaya a Azure Portal y busque Container Apps en la barra de búsqueda.

  2. Seleccione Container Apps.

  3. Selecciona Crear.

  4. Seleccione Aplicación de contenedor

  5. En la sección Aspectos básicos , escriba los valores siguientes.

    En Detalles del proyecto:

    Propiedad Importancia
    Suscripción Seleccione su suscripción a Azure.
    Grupo de recursos Seleccione Crear nuevo grupo de recursos, asígnelo el nombre my-aca-functions-group y seleccione Aceptar.
    Nombre de la aplicación de contenedor Escriba my-aca-functions-app.
  6. Junto a Optimizar para Azure Functions, active la casilla.

    Recorte de pantalla de Azure Portal al crear una aplicación contenedora preconfigurada para Azure Functions.

  7. En Entorno de Container Apps, escriba:

    Propiedad Importancia
    Región Seleccione la región más cercana a la suya.
    Entorno de Container Apps Seleccione Crear nuevo entorno.
  8. En la ventana de configuración del entorno, escriba:

    Propiedad Importancia
    Nombre del entorno Escriba my-aca-functions-environment
    Redundancia de zona Seleccione Deshabilitado.
  9. Seleccione Crear para guardar los valores.

  10. Seleccione Siguiente: Contenedor para cambiar a la sección Contenedor .

  11. Junto a Usar imagen de inicio rápido, deje esta casilla desactivada.

  12. En la sección Detalles del contenedor , escriba los valores siguientes.

    Propiedad Importancia
    Nombre Este cuadro se rellena previamente con la selección en la última sección.
    Origen de la imagen Selección de Docker Hub u otros registros
    Suscripción Seleccione su suscripción.
    Tipo de imagen Seleccione Público.
    Registry login server (Servidor de inicio de sesión de registro) Escriba mcr.microsoft.com
    Image and tag (Imagen y etiqueta) Escriba k8se/quickstart-functions:latest
  13. En Variables de entorno, escriba valores para las siguientes variables:

    • AzureWebJobsStorage
    • APPINSIGHTS_INSTRUMENTATIONKEY o APPLICATIONINSIGHTS_CONNECTION_STRING

    Escriba los valores de identidad administrada o cadena de conexión para estas variables. Se recomienda la identidad administrada.

    La AzureWebJobsStorage variable es una cadena de conexión de la cuenta de Azure Storage necesaria para Azure Functions. Esta cuenta de almacenamiento almacena registros de ejecución de funciones, administra desencadenadores y enlaces y mantiene el estado de las funciones duraderas.

    Application Insights es un servicio de supervisión y diagnóstico que proporciona información sobre el rendimiento y el uso de Azure Functions. Esta supervisión le ayuda a realizar un seguimiento de las tasas de solicitudes, los tiempos de respuesta, las tasas de error y otras métricas.

  14. Seleccione Siguiente > entrada para cambiar a la sección Entrada y escriba los valores siguientes.

    Propiedad Importancia
    Entrada Active la casilla Habilitado para habilitar la entrada.
    Tráfico de entrada Seleccione Aceptar tráfico desde cualquier lugar.
    Tipo de entrada Seleccione HTTP.
    Puerto de destino Escriba 80.
  15. Seleccione Revisar + crear.

  16. Selecciona Crear.

  17. Una vez finalizada la implementación, seleccione Ir al recurso.

  18. En la página Información general , seleccione el vínculo situado junto a Dirección URL de la aplicación para abrir la aplicación en una nueva pestaña del explorador.

  19. Anexe /api/HttpExample al final de la dirección URL.

    En el explorador, se devuelve un mensaje que indica "La función de activación HTTP procesó una solicitud."

Prerrequisitos

Creación de una aplicación de Functions

Para iniciar sesión en Azure desde la CLI, ejecute el siguiente comando y siga las indicaciones para completar el proceso de autenticación.

  1. Inicie sesión en Azure.

    az login
    
  2. Para asegurarse de que ejecuta la versión más reciente de la CLI, ejecute el comando de actualización.

    az upgrade
    
  3. Instale o actualice la extensión azure Container Apps para la CLI.

    Si recibe errores sobre los parámetros que faltan al ejecutar comandos az containerapp en la CLI de Azure o cmdlets desde el módulo Az.App de PowerShell, asegúrese de que tiene instalada la versión más reciente de la extensión Azure Container Apps.

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

    Ahora que está instalada la extensión o el módulo actual, registre los espacios de nombres Microsoft.App y Microsoft.OperationalInsights.

    az provider register --namespace Microsoft.App
    
    az provider register --namespace Microsoft.OperationalInsights
    
  4. Cree variables de entorno.

    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. Cree un grupo de recursos.

    az group create \
      --name $RESOURCE_GROUP_NAME \
      --location $LOCATION \
      --output none
    
  6. Creación del entorno de Container Apps.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION \
        --output none
    
  7. Creación de la cuenta de almacenamiento

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --sku $STORAGE_ACCOUNT_SKU
    
  8. Obtener la cadena de conexión de la cuenta de almacenamiento

    $STORAGE_ACCOUNT_CONNECTION_STRING = az storage account show-connection-string \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  9. Creación de Azure Applications Insights

    az monitor app-insights component create \
    --app $APPLICATION_INSIGHTS_NAME \
    --location $LOCATION \
      --resource-group $RESOURCE_GROUP \
      --application-type web
    
  10. Adquisición de la cadena de conexión de 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. Cree una aplicación de contenedor de 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 devuelve la dirección URL de la aplicación de Functions. Copie esta dirección URL y péguela en un explorador web.

  12. Crear una aplicación de contenedor de Azure Functions con el modo de revisiones múltiples para el escenario de revisiones múltiples

    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. En un escenario de múltiples revisiones, actualice el ContainerApp y divida el tráfico.

    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 al final de la dirección URL.

    En el explorador, se devuelve un mensaje que indica "La función de activación HTTP procesó una solicitud."

Administración de funciones

Puede administrar las funciones implementadas en Azure Container Apps mediante la CLI de Azure. Los siguientes comandos le ayudan a enumerar, inspeccionar e interactuar con las funciones que se ejecutan en el entorno en contenedor.

Nota:

Al tratar con escenarios multirrevisión, agregue el parámetro --revision <REVISION_NAME> al comando para dirigirse a una revisión específica.

Enumerar funciones

Vea todas las funciones implementadas en la aplicación contenedora:

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

Mostrar detalles de la función

Obtenga información detallada sobre una función específica:

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

Supervisión de invocaciones de función

La supervisión de la aplicación de funciones es esencial para comprender su rendimiento y diagnosticar problemas. Los siguientes comandos muestran cómo recuperar las direcciones URL de función, las invocaciones de desencadenador y ver resúmenes detallados de telemetría e invocación mediante la CLI de Azure. Asegúrese de invocar la función varias veces con curl -X POST "fqdn/api/HttpExample" antes de llamar a los seguimientos

  1. Para ver los rastros de invocación, obtenga rastreos detallados de las funciones invocadas.

    az containerapp function invocations traces \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h \
      --limit 3
    
  2. Vea un resumen de invocación para revisar las invocaciones correctas y con errores.

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

Actualización de claves de función

Azure Functions usa claves para la autenticación y autorización. Puede administrar los siguientes tipos diferentes de claves:

  • Claves de host: acceso a cualquier función de la aplicación
  • Claves maestras: proporcionar acceso administrativo
  • Claves del sistema: usadas por los servicios de Azure
  • Claves de función: acceso a funciones específicas

Los comandos siguientes muestran cómo administrar claves para el host. Para ejecutar el mismo comando para una aplicación de Functions específica, agregue el --function-name <FUNCTIONS_APP_NAME> parámetro al comando.

Enumerar claves

Use los siguientes comandos para enumerar las claves a nivel de host y específicas de función para Azure Functions que se están ejecutando en Container Apps.

Nota:

Mantenga un mínimo de una réplica en ejecución para que funcionen los siguientes comandos de administración de claves.

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

Mostrar una clave específica

Muestre el valor de una clave de nivel de host específica para la aplicación de funciones con el siguiente comando:

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

Establecimiento de una clave

Establezca una clave de nivel de host específica para la aplicación de funciones con el comando siguiente:

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