Biblioteca cliente de tablas de Azure WebJobs para .NET: versión 1.2.0
Esta extensión proporciona funcionalidad para acceder a tablas de Azure en Azure Functions.
Introducción
Instalar el paquete
Instale la extensión Tables con NuGet:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables
Requisitos previos
Necesita una suscripción de Azure y una cuenta de almacenamiento o una cuenta de tablas de Cosmos para usar este paquete.
Uso de tablas de almacenamiento
Para crear una cuenta de almacenamiento, puede usar Azure Portal, Azure PowerShell o la CLI de Azure. A continuación se facilita un ejemplo mediante el uso de la CLI de Azure:
az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
Uso de tablas de Cosmos
Para crear tablas de Cosmos, puede usar Azure Portal, Azure PowerShell o la CLI de Azure.
Autenticar el cliente
Connection representa un conjunto de información necesaria para conectarse a table service. Puede contener una cadena de conexión, un punto de conexión, una credencial de token o una clave compartida.
La Connection
propiedad de TableAttribute
define qué conexión se usa para el acceso a Table Service. Por ejemplo, [Tables(Connection="MyTableService")]
va a usar MyTableService
la conexión.
La información de conexión se puede establecer en o en local.settings.json
la configuración de la aplicación en Azure Portal.
Al agregar una configuración a local.settings.json colóquela en la Values
propiedad :
{
"IsEncrypted": false,
"Values": {
"MyTableService": "..."
}
}
Al agregar una configuración a la configuración de la aplicación en Azure Portal use el nombre proporcionado directamente:
MyTableService = ...
La extensión Tables usa el AzureWebJobsStorage
nombre de conexión de forma predeterminada.
Cadena de conexión
Para usar la autenticación de cadenas de conexión, asigne el valor de cadena de conexión directamente a la configuración de conexión.
<ConnectionName>
= DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net
Uso de la credencial de punto de conexión y token
NOTA: La autenticación de credenciales de token solo se admite para las tablas de almacenamiento.
<ConnectionName>__endpoint
= https://...table.core.windows.net
Si no se proporciona información de credenciales, se usa .DefaultAzureCredential
Al usar la identidad administrada asignada por el usuario, es necesario proporcionar la clientId
configuración y credential
:
<ConnectionName>__credential
= managedidentity
<ConnectionName>__clientId
= <user-assigned client id>
Uso de credenciales de clave compartida
Al usar la autenticación de clave compartida, endpoint
accountKey
es necesario proporcionar y accountName
.
<ConnectionName>__endpoint
= https://...table.core.windows.net
<ConnectionName>__credential__accountName
= <account name>
<ConnectionName>__credential__accountKey
= <account key>
Conceptos clave
El enlace de entrada permite leer la tabla como entrada en una función de Azure. El enlace de salida permite modificar y eliminar filas de tabla en una función de Azure.
Siga el tutorial de enlace de entrada y el tutorial de enlace de salida para obtener información sobre el uso de esta extensión para acceder a Table Service.
Ejemplos
Las extensiones de tablas solo proporcionan enlaces. Los enlaces por sí mismos no pueden desencadenar una función. Solo puede leer o escribir entradas en la tabla.
En el ejemplo siguiente se usa el desencadenador HTTP para invocar la función .
Enlace a una sola entidad
public class InputSingle
{
[FunctionName("InputSingle")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
[Table("MyTable", "<PartitionKey>", "<RowKey>")] TableEntity entity, ILogger log)
{
log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity["Text"]}");
}
}
Enlace a una sola entidad mediante el tipo de modelo
public class MyEntity
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
public class InputSingleModel
{
[FunctionName("InputSingleModel")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
[Table("MyTable", "<PartitionKey>", "<RowKey>")] MyEntity entity, ILogger log)
{
log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity.Text}");
}
}
Enlace a varias entidades con filtro
public class InputMultipleEntitiesFilter
{
[FunctionName("InputMultipleEntitiesFilter")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
[Table("MyTable", "<PartitionKey>", Filter = "Text ne ''")] IEnumerable<TableEntity> entities, ILogger log)
{
foreach (var entity in entities)
{
log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity["Text"]}");
}
}
}
Creación de una sola entidad
public class OutputSingle
{
[FunctionName("OutputSingle")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
[Table("MyTable")] out TableEntity entity)
{
entity = new TableEntity("<PartitionKey>", "<RowKey>")
{
["Text"] = "Hello"
};
}
}
Creación de una sola entidad mediante el modelo
public class MyEntity
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
public class OutputSingleModel
{
[FunctionName("OutputSingleModel")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
[Table("MyTable")] out MyEntity entity)
{
entity = new MyEntity()
{
PartitionKey = "<PartitionKey>",
RowKey = "<RowKey>",
Text = "Hello"
};
}
}
Creación de varias entidades
public class OutputMultiple
{
[FunctionName("OutputMultiple")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
[Table("MyTable")] IAsyncCollector<TableEntity> collector)
{
for (int i = 0; i < 10; i++)
{
collector.AddAsync(new TableEntity("<PartitionKey>", i.ToString())
{
["Text"] = i.ToString()
});
}
}
}
Creación de varias entidades mediante el modelo
public class MyEntity
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
public class OutputMultipleModel
{
[FunctionName("OutputMultipleModel")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
[Table("MyTable")] IAsyncCollector<MyEntity> collector)
{
for (int i = 0; i < 10; i++)
{
collector.AddAsync(new MyEntity()
{
PartitionKey = "<PartitionKey>",
RowKey = i.ToString(),
Text = i.ToString()
});
}
}
}
Enlace al tipo TableClient del SDK
Use un parámetro de método TableClient para acceder a la tabla mediante el SDK de Tablas de Azure.
public class BindTableClient
{
[FunctionName("BindTableClient")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
[Table("MyTable")] TableClient client)
{
await client.AddEntityAsync(new TableEntity("<PartitionKey>", "<RowKey>")
{
["Text"] = request.GetEncodedPathAndQuery()
});
}
}
Solución de problemas
Consulte Monitor Azure Functions para obtener instrucciones de solución de problemas.
Pasos siguientes
Lea la introducción a La función de Azure o cree una guía de funciones de Azure.
Contribuciones
Consulte la CONTRIBUTING.md para obtener más información sobre la compilación, las pruebas y la contribución a esta biblioteca.
Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más información, visite cla.microsoft.com.
Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.