Bibliothèque de client Tables Azure WebJobs pour .NET - version 1.2.0
Cette extension fournit des fonctionnalités permettant d’accéder aux tables Azure dans Azure Functions.
Prise en main
Installer le package
Installez l’extension Tables avec NuGet :
dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables
Prérequis
Vous avez besoin d’un abonnement Azure et d’un compte de stockage ou d’un compte de tables Cosmos pour utiliser ce package.
Utilisation de tables de stockage
Pour créer un compte de stockage, vous pouvez utiliser le portail Azure, Azure PowerShell ou Azure CLI. Voici un exemple utilisant Azure CLI :
az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
Utilisation de Cosmos Tables
Pour créer une table Cosmos , vous pouvez utiliser le portail Azure, Azure PowerShell ou Azure CLI.
Authentifier le client
La connexion représente un ensemble d’informations requises pour se connecter à un service de table. Il peut contenir une chaîne de connexion, un point de terminaison, des informations d’identification de jeton ou une clé partagée.
La Connection
propriété de TableAttribute
définit la connexion utilisée pour l’accès au service de table. Par exemple, [Tables(Connection="MyTableService")]
va utiliser la MyTableService
connexion.
Les informations de connexion peuvent être définies dans local.settings.json
les paramètres de l’application ou dans Portail Azure.
Lorsque vous ajoutez un paramètre à local.settings.json , placez-le sous la Values
propriété :
{
"IsEncrypted": false,
"Values": {
"MyTableService": "..."
}
}
Lorsque vous ajoutez un paramètre aux paramètres d’application dans Portail Azure utilisez directement le nom fourni :
MyTableService = ...
L’extension Tables utilise le nom de AzureWebJobsStorage
connexion par défaut.
Chaîne de connexion
Pour utiliser l’authentification des chaînes de connexion, affectez la valeur de chaîne de connexion directement au paramètre de connexion.
<ConnectionName>
= DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net
Utilisation des informations d’identification de point de terminaison et de jeton
REMARQUE : l’authentification des informations d’identification par jeton est prise en charge uniquement pour les tables de stockage.
<ConnectionName>__endpoint
= https://...table.core.windows.net
Si aucune information d’identification n’est fournie, est DefaultAzureCredential
utilisé.
Lors de l’utilisation d’une identité gérée affectée par l’utilisateur, les clientId
paramètres et credential
doivent être fournis :
<ConnectionName>__credential
= managedidentity
<ConnectionName>__clientId
= <user-assigned client id>
Utilisation des informations d’identification de clé partagée
Lors de l’utilisation de l’authentification par clé partagée, les endpoint
accountKey
et accountName
doivent être fournis.
<ConnectionName>__endpoint
= https://...table.core.windows.net
<ConnectionName>__credential__accountName
= <account name>
<ConnectionName>__credential__accountKey
= <account key>
Concepts clés
La liaison d’entrée vous permet de lire la table en tant qu’entrée dans une fonction Azure. La liaison de sortie vous permet de modifier et de supprimer des lignes de table dans une fonction Azure.
Suivez le didacticiel sur la liaison d’entrée et le didacticiel sur la liaison de sortie pour en savoir plus sur l’utilisation de cette extension pour accéder au service de table.
Exemples
Les extensions de tables fournissent uniquement des liaisons. Les liaisons par elles-mêmes ne peuvent pas déclencher une fonction. Il peut uniquement lire ou écrire des entrées dans la table.
Dans l’exemple suivant, nous utilisons le déclencheur HTTP pour appeler la fonction .
Liaison à une seule entité
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"]}");
}
}
Liaison à une seule entité à l’aide du type de modèle
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}");
}
}
Liaison à plusieurs entités avec filtre
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"]}");
}
}
}
Création d’une entité unique
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"
};
}
}
Création d’une entité unique à l’aide d’un modèle
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"
};
}
}
Création de plusieurs entités
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()
});
}
}
}
Création de plusieurs entités à l’aide du modèle
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()
});
}
}
}
Liaison au type TableClient du SDK
Utilisez un paramètre de méthode TableClient pour accéder à la table à l’aide du Kit de développement logiciel (SDK) Tables 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()
});
}
}
Résolution des problèmes
Pour obtenir des conseils de dépannage, reportez-vous à Monitor Azure Functions.
Étapes suivantes
Lisez l’introduction à Azure Function ou la création d’un guide de fonction Azure.
Contribution
Consultez la CONTRIBUTING.md pour plus d’informations sur la création, le test et la contribution à cette bibliothèque.
Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez cla.microsoft.com.
Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.