Configuración de enlaces de función
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"
}