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.jsonles 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 endpointaccountKey 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.

Impressions