Configuración de enlaces de función

Completado

Para configurar una instancia de Azure Functions para que use un enlace de Azure Cosmos DB for NoSQL, primero debe crear una configuración de aplicación en la instancia de la función con la cadena de conexión de la cuenta de Azure Cosmos DB. Si usa Azure Portal, esto se puede hacer automáticamente. Una vez que tenga la configuración de la aplicación con la cadena de conexión, puede aprovechar la configuración en enlaces para la función de Azure.

Nota:

En los ejemplos siguientes se supone que una configuración de aplicación denominada cosmosdbsqlconnstr ya está configurada en la instancia de la función con la cadena de conexión de la cuenta de Azure Cosmos DB.

El archivo function.json es el archivo de configuración para todos los enlaces dentro de una función. El archivo contiene un objeto JSON con una propiedad denominada bindings. El objeto bindings es una matriz de enlaces de desencadenador, entrada y salida para esa función determinada.

{
  "bindings": []
}

Desencadenamiento de una función tras cambios en la fuente de cambios

La configuración del desencadenador de la Azure Cosmos DB for NoSQL requiere un objeto JSON dentro de la matriz de enlaces. Este objeto contiene varias propiedades que se pueden configurar para cambiar el comportamiento del desencadenador. Estas propiedades incluyen, entre otras, las siguientes:

Propiedad Descripción
type Se establece estáticamente en cosmosDBTrigger.
name Este es el nombre usado para el parámetro de método que se asignará a este enlace en el código.
direction Para un desencadenador, se establecerá en in.
connectionStringSetting Este es el nombre de la cadena de conexión en la configuración de la aplicación de la función.
databaseName Nombre de la base de datos, que incluye el contenedor que se va a supervisar.
collectionName Nombre del contenedor que se va a supervisar.
leaseCollectionName Nombre del contenedor usado para administrar las concesiones de la fuente de cambios.
createLeaseCollectionIfNotExists Valor booleano que indica si el runtime de Azure Functions debe crear el contenedor de concesión en su nombre si aún no existe.

Aquí se incluye un ejemplo de un desencadenador que supervisa los cambios en la base de datos cosmicworks y en el contenedor products. Este desencadenador usará la fuente de cambios para supervisar si se crean nuevos elementos o si se actualizan los elementos existentes.

{
  "type": "cosmosDBTrigger",
  "name": "changes",
  "direction": "in",
  "connectionStringSetting": "cosmosdbsqlconnstr",
  "databaseName": "cosmicworks",
  "collectionName": "products",
  "leaseCollectionName": "productslease",
  "createLeaseCollectionIfNotExists": false
}

Este desencadenador iniciará la función cuando haya un nuevo lote de elementos para procesar desde la fuente de cambios.

Enlace del parámetro de entrada de la función a un elemento o consulta

De manera opcional, la matriz de enlaces puede tener varios enlaces de entrada. Hay dos tipos de enlaces de entrada: enlaces de entrada que realizan una lectura de punto y buscan un solo elemento, y enlaces de entrada que realizan una consulta SQL y devuelven varios elementos.

Enlace de entrada de lectura de punto

Los enlaces de entrada de lectura puntuales usan el identificador único y el valor de clave de partición de un elemento para realizar una operación de lectura rápida. Este objeto de configuración solo difiere del desencadenador en algunos cambios en las propiedades:

Propiedad Descripción
type Este enlace de entrada tiene un tipo estático de cosmosDB.
direction Los enlaces de entrada se establecerán en in.
id Identificador único para el elemento de destino.
partitionKey Valor de clave de partición para el elemento de destino.

Nota:

Las propiedades duplicadas, como databaseName y collectionName, se excluyen de esta tabla, dado que se describieron anteriormente en esta unidad.

Aquí se incluye un ejemplo de un enlace de entrada que lee un elemento con un identificador de 91AA100C-D092-4190-92A7-7C02410F04EA y una clave de partición de F3FBB167-11D8-41E4-84B4-5AAA92B1E737.

{
  "type": "cosmosDB",
  "name": "item",
  "direction": "in",
  "connectionStringSetting": "cosmosdbsqlconnstr",
  "databaseName": "cosmicworks",
  "collectionName": "products",
  "id": "91AA100C-D092-4190-92A7-7C02410F04EA",
  "partitionKey": "F3FBB167-11D8-41E4-84B4-5AAA92B1E737"
}

Este enlace de entrada, tal y como está configurado, incluirá un único elemento como valor de entrada para la función.

Enlace de entrada de consulta SQL

Un enlace de entrada de consulta SQL utiliza una consulta SQL para buscar varios elementos y entregarlos a la función. El objeto de configuración para este tipo de enlace solo incluye un campo adicional:

Propiedad Descripción
sqlQuery Consulta SQL usada para buscar varios elementos.

Aquí se incluye un ejemplo de este tipo de enlace de entrada que realiza una consulta SQL para devolver un subconjunto de elementos del contenedor, donde solo se incluyen unos pocos campos en los resultados.

{
  "type": "cosmosDB",
  "name": "items",
  "direction": "in",
  "connectionStringSetting": "cosmosdbsqlconnstr",
  "databaseName": "cosmicworks",
  "collectionName": "products",
  "sqlQuery": "SELECT p.id, p.name, p.categoryId FROM products p WHERE p.price > 500"
}

Este enlace de entrada, tal y como está configurado, incluirá varios elementos como valor de entrada para la función.

Elementos de salida de la función

Por último, la matriz de enlaces incluye un enlace de salida para configurar canalizaciones para enviar datos a otros componentes de aplicación o servicios en la nube. Principalmente hay dos maneras de configurar el enlace de salida: use el enlace de salida para escribir un único elemento en un contenedor, o usar el enlace de salida para escribir varios elementos en un contenedor.

En ambos ejemplos, el enlace de salida se configura mediante la manipulación de solo algunas propiedades:

Propiedad Descripción
type Este enlace de salida tiene un tipo estático de cosmosDB.
direction Los enlaces de salida se establecerán en out.

Aquí se incluye un ejemplo de un enlace de salida que escribe uno o varios elementos en el contenedor cosmicworks.

{
  "type": "cosmosDB",
  "name": "output",
  "direction": "out",
  "connectionStringSetting": "cosmosdbsqlconnstr",
  "databaseName": "cosmicworks",
  "collectionName": "products"
}