Compartir a través de


Guía para desarrolladores de Azure Functions

En Azure Functions, todas las funciones comparten algunos conceptos y componentes técnicos básicos, independientemente del lenguaje o entorno de desarrollo que prefiera. Este artículo es específico del lenguaje. Elija su lenguaje preferido en la parte superior del artículo.

En este artículo se supone que ya ha leído la información general Azure Functions.

Si prefiere saltar directamente, puede completar un tutorial de inicio rápido mediante Visual Studio, Visual Studio Code o desde el símbolo del command.

Si prefiere saltar directamente, puede completar un tutorial de inicio rápido con Maven (línea de comandos), EclipseIntelliJ IDEA, Gradle, Quarkus, Spring Cloud o Visual Studio Code.

Si prefiere saltar directamente, puede completar un tutorial de inicio rápido mediante Visual Studio Code o desde el símbolo del sistema command.

Si prefiere saltar directamente, puede completar un tutorial de inicio rápido mediante Visual Studio Code o desde el símbolo del sistema command.

Si prefiere saltar directamente, puede completar un tutorial de inicio rápido mediante Visual Studio Code o desde el símbolo del sistema command.

Si prefiere saltar directamente, puede completar un tutorial de inicio rápido mediante Visual Studio Code o desde el símbolo del sistema command.

Proyecto de código

En el núcleo de Azure Functions es un proyecto de código específico del lenguaje que implementa una o varias unidades de ejecución de código denominadas functions. Las funciones son simplemente métodos que se ejecutan en la nube de Azure en función de eventos, en respuesta a solicitudes HTTP o según una programación. Piense en el proyecto de código de Azure Functions como un mecanismo para organizar, implementar y administrar colectivamente las funciones individuales en el proyecto cuando se ejecutan en Azure. Para obtener más información, consulte Organizar funciones.

La forma en que usted presenta su proyecto de código y cómo indica qué métodos en su proyecto son funciones dependerá del lenguaje de desarrollo de su proyecto. Para obtener instrucciones detalladas específicas del lenguaje, consulte la Guía para desarrolladores de C#.

La forma en que usted presenta su proyecto de código y cómo indica qué métodos en su proyecto son funciones dependerá del lenguaje de desarrollo de su proyecto. Para obtener instrucciones específicas del lenguaje, consulte la guía para desarrolladores de Java.

La forma en que usted presenta su proyecto de código y cómo indica qué métodos en su proyecto son funciones dependerá del lenguaje de desarrollo de su proyecto. Para obtener instrucciones específicas del lenguaje, consulte la Guía para desarrolladores de Node.js.

La forma en que usted presenta su proyecto de código y cómo indica qué métodos en su proyecto son funciones dependerá del lenguaje de desarrollo de su proyecto. Para obtener información específica sobre el lenguaje, consulte la Guía para desarrolladores de PowerShell.

La forma en que usted presenta su proyecto de código y cómo indica qué métodos en su proyecto son funciones dependerá del lenguaje de desarrollo de su proyecto. Para obtener instrucciones específicas del lenguaje, consulte la guía para desarrolladores de Python.

Todas las funciones deben tener un desencadenador, que define cómo se inicia la función y puede proporcionar entrada a la función. De manera opcional, las funciones pueden definir enlaces de entrada y salida. Estos enlaces simplifican las conexiones a otros servicios sin tener que trabajar con los SDK de cliente. Para obtener más información, consulte Azure Functions desencadenadores y enlaces.

Azure Functions proporciona un conjunto de plantillas de función y proyecto específicas del lenguaje que facilitan la creación de nuevos proyectos de código y la adición de funciones al proyecto. Puede usar cualquiera de las herramientas que admiten el desarrollo de Azure Functions para generar nuevas aplicaciones y funciones mediante estas plantillas.

Herramientas de desarrollo

Las siguientes herramientas proporcionan una experiencia integrada de desarrollo y publicación para Azure Functions en su lenguaje preferido:

  • Eclipse

  • Gradle

  • IntelliJ IDEA

  • Quarkus

  • Spring Cloud

Estas herramientas se integran con Azure Functions Core Tools para poder ejecutar y depurar en el equipo local mediante el runtime de Functions. Para obtener más información, consulte Code y pruebe Azure Functions localmente.

También hay un editor en el portal de Azure que le permite actualizar el código y el archivo de definición function.json directamente en el portal. Solo debe usar este editor para realizar pequeños cambios o crear funciones de prueba de concepto. Debe desarrollar las funciones localmente, siempre que sea posible. Para obtener más información, consulte Crear la primera función en el portal de Azure.

La edición del portal solo se admite para Node.js versión 3, que usa el archivo function.json.

Implementación

Al publicar el proyecto de código en Azure, básicamente va a implementar el proyecto en un recurso de aplicación de funciones existente. Una aplicación de funciones proporciona un contexto de ejecución en Azure en el que se ejecutan las funciones. Por lo tanto, es la unidad de implementación y administración de las funciones. Desde una perspectiva de recursos de Azure, una aplicación de funciones es equivalente a un recurso de sitio (Microsoft.Web/sites) en Azure App Service, que es equivalente a una aplicación web.

Una aplicación de funciones se compone de una o varias funciones individuales que se administran, implementan y se escalan en conjunto. Todas las funciones de una aplicación de función comparten el mismo plan de precios, el mismo método de implementación y la misma versión en tiempo de ejecución. Para obtener más información, consulte Cómo administrar una aplicación de funciones.

Cuando la aplicación de funciones y cualquier otro recurso necesario aún no existen en Azure, primero debe crear estos recursos para poder implementar los archivos del proyecto. Puede crear estos recursos de una de estas maneras:

Además de la publicación basada en herramientas, Functions admite otras tecnologías para implementar código fuente en una aplicación de funciones existente. Para obtener más información, consulte Tecnologías de implementación en Azure Functions.

Conexión a los servicios

Un requisito importante de cualquier servicio de proceso basado en la nube es leer datos de en otros servicios en la nube y escribir datos en estos servicios. Functions proporciona un amplio conjunto de enlaces que facilita la conexión a los servicios sin tener que trabajar con los SDK de cliente.

Tanto si usa las extensiones de enlace proporcionadas por Functions como si trabaja directamente con los SDK de cliente, almacena datos de conexión de forma segura y no los incluye en el código. Para obtener más información, consulte Conexiones.

Enlaces

Functions proporciona enlaces para muchos servicios Azure y algunos servicios de terceros, que se implementan como extensiones. Para obtener más información, consulte la lista completa de enlaces admitidos.

Las extensiones de enlace pueden admitir entradas y salidas, y muchos desencadenadores también actúan como enlaces de entrada. Los enlaces permiten configurar la conexión a los servicios para que el host de Functions pueda controlar el acceso a los datos por usted. Para obtener más información, consulte Azure Functions desencadenadores y enlaces.

Si tiene problemas con errores procedentes de enlaces, consulte la documentación de Azure Functions Códigos de error de enlace.

SDK de cliente

Aunque Functions proporciona enlaces para simplificar el acceso a datos en el código de función, todavía puede usar un SDK de cliente en el proyecto para acceder directamente a un servicio determinado, si lo prefiere. Es posible que tenga que usar los SDK de cliente directamente si las funciones requieren una funcionalidad del SDK subyacente que no es compatible con la extensión de enlace.

Al usar los SDK de cliente, debería usar el mismo proceso para almacenar y acceder a cadenas de conexión usadas por las extensiones de enlace.

Al crear una instancia del SDK de cliente en las funciones, debe obtener la información de conexión requerida por el cliente desde variables de entorno.

Al crear una instancia del SDK de cliente en las funciones, debe obtener la información de conexión requerida por el cliente desde variables de entorno.

Al crear una instancia del SDK de cliente en las funciones, debe obtener la información de conexión requerida por el cliente desde variables de entorno.

Al crear una instancia del SDK de cliente en las funciones, debe obtener la información de conexión requerida por el cliente desde variables de entorno.

Al crear una instancia del SDK de cliente en las funciones, debe obtener la información de conexión requerida por el cliente desde variables de entorno.

Conexiones

Como procedimiento recomendado de seguridad, Azure Functions aprovecha la funcionalidad de configuración de la aplicación de Azure App Service para ayudarle a almacenar cadenas, claves y otros tokens de forma más segura para conectarse a otros servicios. La configuración de la aplicación en Azure se almacena cifrada y la aplicación puede acceder a ella en tiempo de ejecución como variable de entorno namevalue pares. Para desencadenadores y enlaces que requieren una propiedad de conexión, establezca el nombre de configuración de la aplicación en lugar del cadena de conexión real. No se puede configurar un enlace directamente con una clave o un cadena de conexión.

Por ejemplo, considere una definición de desencadenador que tenga una propiedad . En lugar de la cadena de conexión, establezca connection en el nombre de una variable de entorno que contenga el cadena de conexión. El uso de esta estrategia de acceso a secretos hace que las aplicaciones sean más seguras y facilita el cambio de conexiones entre entornos. Para obtener aún más seguridad, puede usar conexiones basadas en identidades.

El proveedor de configuración predeterminado utiliza variables de entorno. Estas variables se definen en configuración de aplicación cuando se ejecuta en el Azure y en el archivo de configuración local al desarrollar localmente.

Valores de conexión

Cuando el nombre de conexión se resuelve en un único valor exacto, el tiempo de ejecución identifica el valor como un cadena de conexión, que normalmente incluye un secreto. Los detalles de un cadena de conexión dependen del servicio al que se conecte.

Sin embargo, un nombre de conexión también puede hacer referencia a una colección de varios elementos de configuración, útil para configurar las conexiones basadas en identidades. Las variables de entorno se pueden tratar como una colección mediante un prefijo compartido que termina en doble carácter de subrayado . A continuación, se puede hacer referencia al grupo. Para ello, establezca el nombre de la conexión en este prefijo.

Por ejemplo, la propiedad connection para una definición de desencadenador de blobs de Azure podría ser Storage1. Siempre que no haya ningún valor de cadena único configurado por una variable de entorno denominada , se podría usar una variable de entorno denominada para informar a la propiedad de la conexión. Las propiedades de conexión son diferentes para cada servicio. Consulte la documentación del componente que utiliza la conexión.

Nota:

Al usar Azure App Configuration o Key Vault para proporcionar la configuración de las conexiones de identidad administrada, los nombres deben usar un separador de claves válido, como : o / en lugar de la __ para asegurarse de que los nombres se resuelven correctamente.

Por ejemplo, .

Configuración de una conexión basada en identidades

Algunas conexiones de Azure Functions se pueden configurar para usar una identidad en lugar de un secreto. La compatibilidad depende de la versión en tiempo de ejecución y de la extensión mediante la conexión. En algunos casos, es posible que todavía se requiera un cadena de conexión en Functions, aunque el servicio al que se conecte admite conexiones basadas en identidades. Para examinar un tutorial sobre cómo configurar las aplicaciones de funciones con identidades administradas, consulte Creación de una aplicación de funciones con conexiones basadas en identidades.

Nota:

Cuando se ejecuta en un plan de Consumo o Elastic Premium, la aplicación usa la configuración de WEBSITE_AZUREFILESCONNECTIONSTRING y WEBSITE_CONTENTSHARE al conectarse a Azure Files en la cuenta de almacenamiento que usa la aplicación de funciones. Azure Files no admite el uso de identidad administrada al acceder al recurso compartido de archivos. Para obtener más información, consulte Azure Files escenarios de autenticación admitidos

Las conexiones basadas en identidades solo se admiten en Functions 4.x, si usa la versión 1.x, primero debe migrar a la versión 4.x.

Los siguientes componentes admiten conexiones basadas en identidades:

Origen de la conexión Planes admitidos Más información
Azure blobs desencadenadores y enlaces All Azure extensión blobs versión 5.0.0 o posterior,
Paquete de extensiones 3.3.0 o posterior
Azure Colas desencadenadores y enlaces All Azure extensión Queues versión 5.0.0 o posterior,
Paquete de extensiones 3.3.0 o posterior
Azure Tablas (al usar Azure Storage) All Azure extensión Tables versión 1.0.0 o posterior,
Paquete de extensiones 3.3.0 o posterior
Azure SQL Database All Connect a function app to Azure SQL with managed identity and SQL bindings
Azure Event Hubs desencadenadores y enlaces All Azure Event Hubs extensión versión 5.0.0 o posterior,
Paquete de extensiones 3.3.0 o posterior
Azure Service Bus desencadenadores y enlaces All Azure Service Bus extensión versión 5.0.0 o posterior,
Paquete de extensiones 3.3.0 o posterior
enlace de salida de Azure Event Grid All Azure Event Grid extensión versión 3.3.0 o posterior,
Paquete de extensiones 3.3.0 o posterior
Azure Cosmos DB desencadenadores y enlaces All Azure Cosmos DB versión 4.0.0 o posterior,
Paquete de extensiones 4.0.2 o una posterior
Azure desencadenadores y enlaces de SignalR All Azure extensión SignalR versión 1.7.0 o posterior
Paquete de extensiones 3.6.1 o una posterior
Azure Web PubSub desencadenadores y enlaces All Azure Web PubSub extensión 1.10.0 o posterior
Paquete de extensiones 3.6.1 o una posterior
proveedor de almacenamiento de Durable Functions (Azure Storage) All Durable Functions extensión versión 2.7.0 o posterior,
Paquete de extensiones 3.3.0 o posterior
Almacenamiento necesario para el host ("AzureWebJobsStorage") All Conexión al almacenamiento de host con una identidad

Cuando se hospeda en el servicio Azure Functions, las conexiones basadas en identidad usan una identidad administrada. La identidad asignada por el sistema se usa de manera predeterminada, aunque se puede especificar una identidad asignada por el usuario con las propiedades y . Tenga en cuenta que no se admite la configuración de una identidad asignada por el usuario mediante un id. de recurso. Cuando se ejecuta en otros contextos, como el de desarrollo local, se usa en su lugar la identidad del desarrollador, aunque se puede personalizar. Consulte Desarrollo local con conexiones basadas en identidades.

Concesión de permiso a la identidad

Cualquier identidad que se utilice debe tener permisos para realizar las acciones previstas. Para la mayoría de los servicios Azure, esto significa que debe assignar un rol en Azure RBAC, mediante roles integrados o personalizados que proporcionan esos permisos.

Importante

Es posible que el servicio de destino muestre algunos permisos que no son necesarios para todos los contextos. Siempre que sea posible, respete el principio de privilegios mínimos y conceda solo los privilegios necesarios a la identidad. Por ejemplo, si la aplicación solo necesita poder leer desde un origen de datos, use un rol que solo tenga permiso de lectura. Sería inadecuado asignar un rol que también permita escribir en ese servicio, ya que sería un permiso excesivo para una operación de lectura. De forma similar, le interesa asegurarse de que la asignación de roles esté limitada solo a los recursos que se deben leer.

Elija una de estas pestañas para obtener información sobre los permisos de cada componente:

Debes crear una asignación de roles que proporcione acceso al contenedor de blobs en runtime. Los roles de administración, como Propietario, no son suficientes. En la tabla siguiente se muestran los roles integrados que se recomiendan al usar la extensión Blob Storage en funcionamiento normal. Tu aplicación puede requerir más permisos según el código que escribas.

Tipo de enlace Roles integrados de ejemplo
Desencadenador Propietario de datos de blobs de almacenamientoyColaborador de datos de cola de almacenamiento1

También se deben conceder permisos adicionales a la conexión AzureWebJobsStorage.2
Enlace de entrada Lector de datos de blobs de almacenamiento
Enlace de salida Propietario de datos de blobs de almacenamiento

1El desencadenador de blobs controla los errores en varios reintentos escribiendo blobs dudosos en una cola en la cuenta de almacenamiento especificada por la conexión.

2 La conexión AzureWebJobsStorage se usa internamente para blobs y colas que habilitan el desencadenador. Si está configurado para usar una conexión basada en identidades, necesita permisos adicionales más allá del requisito predeterminado. Los permisos necesarios están cubiertos por los roles Propietario de datos de blobs de almacenamiento, Colaborador de datos de la cola de Storage y Colaborador de la cuenta de almacenamiento. Para obtener más información, consulte Conexión al almacenamiento de host con una identidad.

Propiedades comunes para conexiones basadas en identidades

Una conexión basada en identidad para un servicio Azure acepta las siguientes propiedades comunes, donde <CONNECTION_NAME_PREFIX> es el valor de la propiedad /connection en la definición de desencadenador o enlace:

Propiedad Plantilla de variable de entorno Descripción
Credencial de token <CONNECTION_NAME_PREFIX>__credential Esta propiedad determina cómo se debe obtener un token para la conexión. La propiedad no debe establecerse en escenarios de desarrollo local. Cuando quiera usar la autenticación de identidad administrada, establezca esta propiedad en . Cuando planea conectarse a un recurso en otro entorno, use en su lugar.
Id. de cliente <CONNECTION_NAME_PREFIX>__clientId Cuando se establece en , esta propiedad se puede establecer para especificar la identidad asignada por el usuario que se utilizará al obtener un token. La propiedad acepta un identificador de cliente correspondiente a una identidad asignada por el usuario asignada a la aplicación. No es válido especificar un id. de recurso así como tampoco es válido un id. de cliente. Si no se especifica ninguna de las dos, se utiliza la identidad asignada por el sistema.

Esta propiedad se usa de forma diferente en escenarios entre inquilinos. Consulte la sección Escenarios entre inquilinos .

Esta propiedad se usa de forma diferente en escenarios de desarrollo locales, en los que no se debe establecer el elemento .
Id. de recurso <CONNECTION_NAME_PREFIX>__managedIdentityResourceId Cuando se establece en , esta propiedad se puede establecer para especificar la identidad asignada por el usuario que se utilizará al obtener un token. La propiedad acepta un identificador de recurso correspondiente a una identidad asignada a la aplicación por el usuario. No es válido especificar un id. de recurso así como tampoco es válido un id. de cliente. Si no se especifica ninguna de las dos, se utiliza la identidad asignada por el sistema.

Es posible que se admitan otras opciones para un tipo de conexión determinado. Consulte la documentación del componente que realiza la conexión.

variables de entorno de SDK de Azure

Precaución

No se recomienda el uso de las variables de entorno de SDK de Azure EnvironmentCredential debido al impacto potencialmente involuntaria en otras conexiones. Tampoco son totalmente compatibles cuando se implementan en Azure Functions.

También se pueden establecer las variables de entorno asociadas a la EnvironmentCredential de la SDK de Azure, pero el servicio Functions no los procesa para el escalado en planes de consumo. Estas variables de entorno no son específicas de ninguna conexión y se aplicarán como valor predeterminado a menos que no se establezca una propiedad correspondiente para una conexión determinada. Por ejemplo, si se establece , se usaría como si se hubiera configurado . Establecer explícitamente invalidaría este valor predeterminado.

Desarrollo local con conexiones basadas en identidades

Nota:

El desarrollo local con conexiones basadas en identidades requiere la versión 4.0.3904 de Azure Functions Core Tools o una versión posterior.

Cuando ejecuta su proyecto de función localmente, la configuración anterior le indica al tiempo de ejecución que use la identidad del desarrollador local. La conexión intenta obtener un token de las siguientes ubicaciones, en orden:

  • Una caché local compartida entre las aplicaciones de Microsoft
  • Contexto de usuario actual en Visual Studio
  • Contexto de usuario actual en Visual Studio Code
  • Contexto de usuario actual en el CLI de Azure

Si ninguna de estas opciones produce un resultado satisfactorio, se producirá un error.

Es posible que la identidad ya tenga algunas asignaciones de roles en Azure recursos usados para el desarrollo, pero es posible que esos roles no proporcionen el acceso a datos necesario. Los roles de administración, como Propietario, no son suficientes. Compruebe los permisos necesarios para las conexiones de cada componente y asegúrese de que se le han asignado.

En algunos casos, puede especificar el uso de una identidad diferente. Puede agregar propiedades de configuración para la conexión que apunte a la identidad alternativa basada en un identificador de cliente y un secreto de cliente para una entidad de servicio de Microsoft Entra. Esta opción de configuración no se admite cuando se hospeda en el servicio Azure Functions. Para usar un id. y un secreto en su máquina local, defina la conexión con las siguientes propiedades adicionales:

Propiedad Plantilla de variable de entorno Descripción
Id. de inquilino <CONNECTION_NAME_PREFIX>__tenantId Identificador de inquilino (directorio) de Microsoft Entra.
Id. de cliente <CONNECTION_NAME_PREFIX>__clientId Id. de cliente (aplicación) de un registro de aplicación en el inquilino.
Secreto del cliente <CONNECTION_NAME_PREFIX>__clientSecret Secreto de cliente generado para el registro de la aplicación.

Este es un ejemplo de local.settings.json propiedades necesarias para la conexión basada en identidades a Azure Blobs:

{
  "IsEncrypted": false,
  "Values": {
    "<CONNECTION_NAME_PREFIX>__blobServiceUri": "<blobServiceUri>",
    "<CONNECTION_NAME_PREFIX>__queueServiceUri": "<queueServiceUri>",
    "<CONNECTION_NAME_PREFIX>__tenantId": "<tenantId>",
    "<CONNECTION_NAME_PREFIX>__clientId": "<clientId>",
    "<CONNECTION_NAME_PREFIX>__clientSecret": "<clientSecret>"
  }
}

Conexión al almacenamiento de host con una identidad

El host de Azure Functions usa el conjunto de conexiones de almacenamiento en AzureWebJobsStorage para habilitar comportamientos principales, como coordinar la ejecución singleton de desencadenadores de temporizador y almacenamiento de claves de aplicación predeterminado. Esta conexión también se puede configurar para usar una identidad.

Precaución

Otros componentes de Functions dependen de para los comportamientos predeterminados. No debe moverla a una conexión basada en identidad si usa versiones anteriores de extensiones que no admiten este tipo de conexión, incluidos desencadenadores y enlaces para blobs Azure, Event Hubs y Durable Functions. De forma similar, se usa para los artefactos de implementación cuando se usa la compilación del lado servidor en Consumo para Linux y, si se habilita, deberá implementar a través de un paquete de implementación externo.

Además, la aplicación de funciones podría reutilizar para otras conexiones de almacenamiento en sus desencadenadores, enlaces o código de función. Asegúrese de que todos los usos de AzureWebJobsStorage puedan usar el formato de conexión basado en identidad antes de cambiar esta conexión de un cadena de conexión.

Para usar una conexión basada en identidades para , configure las siguientes opciones de la aplicación:

Configuración Descripción Valor de ejemplo
AzureWebJobsStorage__blobServiceUri El identificador URI del plano de datos del servicio de blobs de la cuenta de almacenamiento, con el esquema HTTPS. https://storage_account_name.blob.core.windows.net
AzureWebJobsStorage__queueServiceUri El identificador URI del plano de datos del servicio de cola de la cuenta de almacenamiento, con el esquema HTTPS. https://storage_account_name.queue.core.windows.net
AzureWebJobsStorage__tableServiceUri El URI del plano de datos de un Table service de la cuenta de almacenamiento, con el esquema HTTPS. https://nombre_cuenta_almacenamiento.table.core.windows.net

También se pueden establecer Propiedades comunes para conexiones basadas en identidades.

Si va a configurar AzureWebJobsStorage mediante una cuenta de almacenamiento que usa el sufijo DNS predeterminado y el nombre del servicio para la Azure global, siguiendo el formato https://<accountName>.[blob|queue|file|table].core.windows.net, puede establecer AzureWebJobsStorage__accountName en el nombre de la cuenta de almacenamiento. Los puntos de conexión para cada servicio de almacenamiento se deducen para esta cuenta. Esto no funciona cuando la cuenta de almacenamiento está en una nube soberana o tiene un DNS personalizado.

Configuración Descripción Valor de ejemplo
AzureWebJobsStorage__accountName Nombre de una cuenta de almacenamiento, válido solo si la cuenta no está en una nube soberana y no tiene un DNS personalizado. Esta sintaxis es única de y no se puede usar para otras conexiones basadas en identidades. nombre_de_cuenta_de_almacenamiento

Debe crear una asignación de roles que proporcione acceso a la cuenta de almacenamiento para "AzureWebJobsStorage" en tiempo de ejecución. Los roles de administración, como Propietario, no son suficientes. El rol de Propietario de datos de blobs de almacenamiento cubre las necesidades básicas del almacenamiento de host de Functions: el entorno de ejecución necesita acceso de lectura y escritura a blobs y la capacidad de crear contenedores. Varias extensiones usan esta conexión como ubicación predeterminada para blobs, colas y tablas, y estos usos pueden agregar requisitos como se indica en la tabla siguiente. También puede necesitar otros permisos si usa "AzureWebJobsStorage" para cualquier otro propósito.

Extensión Roles necesarios Explicación
Sin extensión (solo host) Propietario de datos de blobs de almacenamiento Functions usa Blob Storage para la coordinación general y como almacén de claves predeterminado.

Este escenario representa el conjunto mínimo de permisos para el funcionamiento normal, pero no incluye compatibilidad con los eventos de diagnóstico1.
No extension (host only), with support for diagnostic events1Sin extensión (solo host), con compatibilidad con eventosde diagnóstico 1 Propietario de datos de Storage Blob,
Colaborador de datos de tabla de Storage
Los eventos de diagnóstico se conservan en el almacenamiento de tablas mediante la conexión AzureWebJobsStorage.
Azure Blobs (solo desencadenador) Todo de:
Colaborador de la cuenta de almacenamiento,
Propietario de datos de Storage Blob,
Colaborador de datos de la cola de Storage
El desencadenador de blobs usa internamente Azure Queues and writes blob receipts. Usa la conexión AzureWebJobsStorage para estos fines, independientemente de la conexión configurada para el desencadenador.
Azure Event Hubs (solo desencadenador) (ningún cambio con respecto al requisito predeterminado)
Propietario de datos de blobs de almacenamiento
Los puntos de control se conservan en blobs mediante la conexión AzureWebJobsStorage.
Desencadenador de temporizador (ningún cambio con respecto al requisito predeterminado)
Propietario de datos de blobs de almacenamiento
Para garantizar una ejecución por evento, los bloqueos se toman con blobs mediante la conexión AzureWebJobsStorage.
Durable Functions Todo de:
Colaborador de datos de Storage Blob,
Colaborador de datos de la cola de Storage,
Colaborador de datos de tabla de Storage
Durable Functions usa blobs, colas y tablas para coordinar las funciones de actividad y mantener el estado de orquestación. Usa la conexión AzureWebJobsStorage de forma predeterminada, pero puede especificar una conexión diferente en la configuración de extensión Durable Functions.

1 Para algunos tipos de problemas, Azure Functions puede generar un evento de diagnóstico que pueda ayudar a solucionar problemas, incluso cuando el problema impide que se inicie la aplicación de funciones. Si no se asigna Colaborador de datos de tabla de almacenamiento, podría ver advertencias en los registros sobre la incapacidad de escribir estos eventos.

Conexión a un recurso en otro entorno

Si la función necesita conectarse a un recurso de un inquilino de Microsoft Entra diferente, la conexión debe usar una credencial de identidad federated. Esto requiere una identidad administrada asignada por el usuario y un registro de aplicación de id. de Entra multiinquilino. No se puede usar una identidad administrada asignada por el sistema para las conexiones entre inquilinos.

Importante

Al configurar un activador para una conexión entre locatarios en los tipos de plan Consumo o Consumo Flexible, la plataforma deja de escalar la aplicación de funciones basada en ese activador.

Para configurar una conexión basada en identidades entre inquilinos, primero debe configurar la infraestructura mediante los pasos siguientes:

  1. En el inquilino donde se implementa la aplicación de funciones, cree una nueva identidad administrada asignada por el usuario.
  2. Asigne esa identidad a la aplicación de funciones.
  3. En el mismo inquilino, cree un registro de aplicación Entra multiinquilino que represente el recurso entre inquilinos al que desea acceder.
  4. Agregue la identidad administrada como una credencial de identidad federada para el registro de la aplicación.
  5. En el inquilino donde se implementa el recurso, cree una aplicación empresarial para el registro de la aplicación.
  6. Asigne permisos para que la aplicación empresarial acceda al recurso.

Una conexión basada en identidades entre inquilinos usa las siguientes propiedades, donde es el valor de la propiedad en la definición de desencadenador o enlace:

Propiedad Plantilla de variable de entorno Descripción
Credencial de token <CONNECTION_NAME_PREFIX>__credential Obligatorio. Al conectarse a un recurso de otro inquilino, establezca esta propiedad en .
Azure Cloud <CONNECTION_NAME_PREFIX>__azureCloud Obligatorio. Esta propiedad determina el entorno de nube de Azure. Los valores permitidos son "públicos" para Azure nube pública, "usgov" para Azure US Government Cloud y "china" para Azure operado por 21Vianet.
Id. de cliente <CONNECTION_NAME_PREFIX>__clientId Obligatorio. Cuando se establece en , establezca esta propiedad en el identificador de cliente (ID de aplicación) del registro de la aplicación.

Esta propiedad se usa de forma diferente en conexiones basadas en identidades de un solo inquilino. Consulte la sección de propiedades comunes .

Esta propiedad se usa de forma diferente en escenarios de desarrollo locales, en los que no se debe establecer el elemento .
Id. de inquilino <CONNECTION_NAME_PREFIX>__tenantId Obligatorio. Cuando se establece en , establezca esta propiedad en el ID del inquilino del recurso.

Esta propiedad se usa de forma diferente en escenarios de desarrollo locales, en los que no se debe establecer el elemento .
Identificador de cliente de identidad administrada <CONNECTION_NAME_PREFIX>__managedIdentityClientId Cuando se establece en , esta propiedad especifica la identidad asignada por el usuario que configuraste como credencial de identidad federada y vinculado a la aplicación.1 La propiedad acepta un ID de cliente correspondiente a esa identidad proporcionada por el usuario.
Id. del objeto de identidad administrada <CONNECTION_NAME_PREFIX>__managedIdentityObjectId Cuando se establece en , esta propiedad especifica la identidad de usuario asignada que has configurado como credencial de identidad federada y asignado a la aplicación.1 La propiedad acepta un identificador de objeto (identidad) correspondiente a esa identidad de usuario asignada.
Identificador de recurso de identidad administrada <CONNECTION_NAME_PREFIX>__managedIdentityResourceId Cuando se establece en , esta propiedad especifica la identidad asignada por el usuario que se configuró como una credencial de identidad federada y se asignó a la aplicación.1 La propiedad acepta un identificador de recurso correspondiente a esa identidad de usuario asignada.

1 Cuando se establece en , la conexión debe especificar exactamente uno de , o .

Esto también se documentado por el SDK de Azure en un formato JSON.

Problemas de informes

Elemento Descripción Vínculo
Tiempo de ejecución Host de script, desencadenadores y enlaces, compatibilidad con idiomas File an Issue
Plantillas Problemas de código con la plantilla de creación File an Issue

Repositorios de código abierto

El código de Azure Functions es código abierto y puede encontrar componentes clave en estos repositorios de GitHub:

Pasos siguientes

Para obtener más información, consulte los siguientes recursos: