0Pricing
Azure Fundamentals · Lección

Desencadenadores y enlaces de Azure Functions

Escriba una función desencadenada por HTTP, añada un enlace de salida para escribir en Azure Queue Storage y comprenda el modelo de escalado automático de Consumption Plan.

Desencadenadores y enlaces de Azure Functions es una lección gratuita de Azure Fundamentals en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Azure Fundamentals, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Azure Fundamentals incluye 4 lecciones en total.

¿Qué es Azure Functions?

Azure Functions es un servicio de proceso sin servidor que permite ejecutar pequeñas unidades de código (functions) en respuesta a eventos sin administrar infraestructura. Solo paga por el tiempo de ejecución y la memoria utilizados mientras se ejecuta la función; no hay ningún coste cuando está inactiva. Functions es ideal para tareas basadas en eventos, API ligeras, trabajos programados e integración de servicios en la nube sin un servidor persistente.

Desencadenadores: qué inicia una función

Cada Azure Function debe tener exactamente un trigger que defina el evento que provoca su ejecución. Entre los desencadenadores habituales se incluyen HTTP (solicitud HTTP entrante), Timer (programación CRON), Blob Storage (nuevo blob en un contenedor), Queue Storage (nuevo mensaje en una cola), Event Hub (flujo de eventos), Service Bus (mensaje de cola o tema) y Cosmos DB (fuente de cambios). El desencadenador recibe los datos del evento y los pasa al código de su función.

// HTTP trigger function (JavaScript/Node.js)
module.exports = async function (context, req) {
  const name = req.query.name || (req.body && req.body.name);
  const message = name ? 'Hello, ' + name : 'Pass a name in the query or body';
  context.res = {
    status: 200,
    body: { message }
  };
};

Function.json: configuración de desencadenadores y bindings

En lenguajes no compilados (JavaScript, Python), un archivo function.json en el directorio de cada función declara sus desencadenadores y bindings. Este archivo asigna los orígenes de eventos y las salidas a parámetros con nombre del código de la función. En C# y Java, los bindings se declaran mediante atributos/anotaciones directamente en el código. El runtime de Functions lee la configuración y configura automáticamente las conexiones con los servicios de Azure.

// function.json — HTTP trigger + Queue output binding
{
  'bindings': [
    {
      'authLevel': 'function',
      'type': 'httpTrigger',
      'direction': 'in',
      'name': 'req',
      'methods': ['post']
    },
    {
      'type': 'http',
      'direction': 'out',
      'name': 'res'
    },
    {
      'type': 'queue',
      'direction': 'out',
      'name': 'outputQueue',
      'queueName': 'processing-queue',
      'connection': 'AzureWebJobsStorage'
    }
  ]
}

Bindings de salida: escritura en servicios

Los bindings de salida permiten que la función escriba datos en servicios de Azure (Blob Storage, Queue Storage, Cosmos DB, Event Hub, etc.) sin administrar SDK ni cadenas de conexión. Solo tiene que asignar un valor al parámetro del binding de salida y el runtime de Functions se encarga de la escritura. Esto reduce considerablemente el código repetitivo y desacopla la función de los detalles específicos de implementación del servicio de Azure.

// HTTP trigger with Queue output binding (Node.js)
module.exports = async function (context, req) {
  const orderData = req.body;

  // Write to queue via output binding -- no SDK needed!
  context.bindings.outputQueue = JSON.stringify({
    orderId: orderData.id,
    timestamp: new Date().toISOString()
  });

  context.res = { status: 202, body: 'Order queued' };
};

Desencadenador de temporizador con expresiones CRON

El desencadenador Timer ejecuta una función según una programación definida mediante una expresión CRON. Azure Functions utiliza una expresión CRON de 6 partes: {seconds} {minutes} {hours} {day} {month} {day-of-week}. Use 0 0 * * * * para ejecutar la función cada hora, 0 0 0 * * * para ejecutarla diariamente a medianoche o 0 0 9-17 * * 1-5 para ejecutarla cada hora durante el horario laboral de lunes a viernes. Las funciones con temporizador son útiles para trabajos de limpieza, generación de informes y comprobaciones de estado.

// Timer trigger — runs every day at 02:00 UTC
// function.json binding:
// {
//   'type': 'timerTrigger',
//   'schedule': '0 0 2 * * *',
//   'name': 'myTimer'
// }

module.exports = async function (context, myTimer) {
  const now = new Date().toISOString();
  context.log('Daily cleanup started at', now);
  // ... perform cleanup logic ...
  context.log('Cleanup completed');
};

Plan de consumo: escalado sin servidor

Con el plan de consumo, Azure Functions escala automáticamente de cero a cientos de instancias según la tasa de eventos de los desencadenadores. Solo paga por el número de ejecuciones y los GB-segundo de memoria consumidos; el primer millón de ejecuciones al mes es gratuito. El host de Functions puede escalar un desencadenador HTTP hasta 200 instancias y un desencadenador de cola hasta el número de mensajes de cola procesados simultáneamente. El inicio en frío (la primera ejecución después de un periodo de inactividad) añade una breve latencia, que las instancias precalentadas del plan Premium ayudan a mitigar.

# View billing details for a function app
az functionapp show \
  --name myFunctionApp \
  --resource-group MyRG \
  --query '{name:name, plan:serverFarmId, state:state}'

# Create a Function App on Consumption plan
az functionapp create \
  --name myFunctionApp \
  --resource-group MyRG \
  --consumption-plan-location eastus \
  --runtime node \
  --runtime-version 18 \
  --storage-account mystorageaccount

Planes Premium y Dedicated

El plan Premium elimina los inicios en frío mediante instancias precalentadas, añade integración con VNet y permite tiempos de espera de ejecución más largos (hasta 60 minutos). El plan Dedicated (App Service) ejecuta las funciones en el mismo plan de App Service que las aplicaciones web, lo que resulta útil cuando necesita costes predecibles o dispone de capacidad de proceso de App Service existente. Elija Consumption para obtener una economía sin servidor real, o Premium para funciones sensibles al rendimiento o conectadas a una VNet.

# Create a Function App on Premium plan (EP1)
az functionapp plan create \
  --name MyPremiumPlan \
  --resource-group MyRG \
  --location eastus \
  --sku EP1 \
  --is-linux

az functionapp create \
  --name myFunctionAppPremium \
  --resource-group MyRG \
  --plan MyPremiumPlan \
  --runtime python \
  --runtime-version 3.11 \
  --storage-account mystorageaccount

Despliegue de Azure Functions

Despliegue Azure Functions mediante Azure Functions Core Tools (func azure functionapp publish), la extensión de VS Code, ZIP deploy mediante la CLI de Azure o una canalización de CI/CD en Azure Pipelines o GitHub Actions. En producción, realice siempre el despliegue desde una canalización en lugar de hacerlo desde el equipo de un desarrollador, para garantizar que las versiones probadas y etiquetadas lleguen a producción. El runtime de Functions también admite el despliegue de contenedores Docker para controlar completamente el entorno de ejecución.

# Local development: install Core Tools
npm install -g azure-functions-core-tools@4

# Start locally (triggers work against real Azure services)
func start

# Deploy to Azure
func azure functionapp publish myFunctionApp

# Or deploy via Azure CLI (ZIP deploy)
zip -r function.zip . --exclude '.git/*'
az functionapp deployment source config-zip \
  --name myFunctionApp \
  --resource-group MyRG \
  --src function.zip

Configuración de aplicaciones y referencias de Key Vault

Las Function Apps almacenan la configuración en configuración de aplicaciones, que aparece como variables de entorno en el código de la función. Almacene las cadenas de conexión, las claves de API y los secretos como configuración de aplicaciones. En producción, utilice referencias de Key Vault para que el valor se almacene en Key Vault y solo se haga referencia a él por su nombre en la configuración de la aplicación, manteniendo los secretos fuera del portal y de los artefactos de despliegue. Habilite una identidad administrada en la Function App para autenticarse en Key Vault sin credenciales.

# Set application settings
az functionapp config appsettings set \
  --name myFunctionApp \
  --resource-group MyRG \
  --settings \
    STORAGE_CONNECTION='@Microsoft.KeyVault(SecretUri=https://mykv.vault.azure.net/secrets/storage-conn/)' \
    COSMOS_DB_URI='https://mycosmosdb.documents.azure.com'

# In function code, read as normal env var
# const storageConn = process.env['STORAGE_CONNECTION'];

Supervisión de Functions con Application Insights

Azure Functions se integra automáticamente con Application Insights cuando se proporciona una clave de instrumentación o una cadena de conexión. Cada ejecución de función se registra como una solicitud, incluidos su duración, éxito o error y propiedades personalizadas. Use las Live Metrics de Application Insights para observar las ejecuciones en tiempo real durante las pruebas y el panel Failures para diagnosticar errores con seguimientos completos de excepciones y llamadas a dependencias.

# Connect Application Insights to a Function App
az functionapp config appsettings set \
  --name myFunctionApp \
  --resource-group MyRG \
  --settings \
    APPLICATIONINSIGHTS_CONNECTION_STRING='InstrumentationKey=xxxxxxxx;...'

# Custom telemetry in function code (Node.js)
const appInsights = require('applicationinsights');
appInsights.setup().start();
const client = appInsights.defaultClient;
client.trackEvent({ name: 'OrderProcessed', properties: { orderId: '123' } });

Comportamiento de concurrencia y escalado

En las funciones activadas por colas, el host de Functions procesa varios mensajes en paralelo. Configure batchSize en host.json para controlar cuántos mensajes procesa simultáneamente una sola instancia. En los desencadenadores HTTP, el escalado horizontal agrega nuevas instancias automáticamente. Use maxConcurrentCalls (desencadenadores de Service Bus) o maxPollingInterval (desencadenadores de cola) para ajustar el rendimiento y evitar sobrecargar servicios posteriores, como las bases de datos, durante los eventos de escalado horizontal.

// host.json — tune queue trigger concurrency
{
  'version': '2.0',
  'extensions': {
    'queues': {
      'batchSize': 16,          // messages per instance
      'newBatchThreshold': 8,   // fetch more when < 8 remain
      'maxPollingInterval': '00:00:02',
      'visibilityTimeout': '00:05:00'
    }
  },
  'functionTimeout': '00:10:00'
}

Comprobación rápida

Compruebe su comprensión de los conceptos de Microsoft Azure Fundamentals (AZ-900) de esta lección.

Resumen de la lección

En esta lección ha aprendido que los desencadenadores definen el evento que inicia una función (HTTP, Timer, Queue, Blob, etc.), los enlaces de salida permiten que las funciones escriban en servicios de Azure sin código del SDK y el plan Consumption ofrece un escalado sin servidor real, con pago por ejecución, desde cero. A continuación, exploraremos Durable Functions para los flujos de trabajo con estado.

Preguntas frecuentes

¿La lección «Desencadenadores y enlaces de Azure Functions» es gratis?

Sí — el texto completo de «Desencadenadores y enlaces de Azure Functions» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Azure Fundamentals, actualiza a CoddyKit PRO. El curso de Azure Fundamentals incluye 4 lecciones en total.

¿Qué aprenderé en «Desencadenadores y enlaces de Azure Functions»?

Escriba una función desencadenada por HTTP, añada un enlace de salida para escribir en Azure Queue Storage y comprenda el modelo de escalado automático de Consumption Plan. Practicas Azure Fundamentals con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Azure Fundamentals?

No se requiere experiencia previa. Azure Fundamentals en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Desencadenadores y enlaces de Azure Functions»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Azure Fundamentals?

Sí. Cada lección de Azure Fundamentals incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Desencadenadores y enlaces de Azure Functions
  2. Durable Functions para flujos de trabajo con estado
  3. Azure Logic Apps
  4. Event Grid y arquitectura controlada por eventos
← Volver a Azure Fundamentals