Partilhar via


Biblioteca de cliente de Tabelas de WebJobs do Azure para .NET – versão 1.1.0

Esta extensão fornece funcionalidades para aceder às Tabelas do Azure no Funções do Azure.

Introdução

Instalar o pacote

Instale a extensão Tabelas com o NuGet:

dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables

Pré-requisitos

Precisa de uma subscrição do Azure e de uma Conta de Armazenamento ou uma Conta de Tabelas do Cosmos para utilizar este pacote.

Utilizar Tabelas de Armazenamento

Para criar uma nova Conta de Armazenamento, pode utilizar o Portal do Azure, o Azure PowerShell ou a CLI do Azure. Eis um exemplo com a CLI do Azure:

az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS

Utilizar Tabelas do Cosmos

Para criar uma nova Tabelas do Cosmos, pode utilizar o Portal do Azure, Azure PowerShell ou a CLI do Azure.

Autenticar o cliente

A ligação representa um conjunto de informações necessárias para ligar a um serviço de tabelas. Pode conter uma cadeia de ligação, um ponto final, uma credencial de token ou uma chave partilhada.

A Connection propriedade de TableAttribute define que ligação é utilizada para o acesso ao Serviço tabela. Por exemplo, [Tables(Connection="MyTableService")] vai utilizar MyTableService a ligação.

As informações de ligação podem ser definidas nas local.settings.jsondefinições da aplicação ou no portal do Azure.

Ao adicionar uma definição a local.settings.json , coloque-a na Values propriedade :

{
  "IsEncrypted": false,
  "Values": {
    "MyTableService": "..."
  }
}

Ao adicionar uma definição às definições da aplicação no portal do Azure utilize o nome fornecido diretamente:

MyTableService = ...

A extensão Tabelas utiliza o nome da AzureWebJobsStorage ligação por predefinição.

Cadeia de ligação

Para utilizar a autenticação de cadeias de ligação, atribua o valor da cadeia de ligação diretamente à definição de ligação.

<ConnectionName> = DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net

Utilizar credenciais de ponto final e token

NOTA: a autenticação de credenciais de token é suportada apenas para tabelas de armazenamento.

<ConnectionName>__endpoint = https://...table.core.windows.net

Se não forem fornecidas informações de credenciais, é DefaultAzureCredential utilizado.

Ao utilizar a identidade de gestão atribuída pelo utilizador, as clientId definições e credential têm de ser fornecidas:

<ConnectionName>__credential = managedidentity

<ConnectionName>__clientId = <user-assigned client id>

Utilizar credenciais de chave partilhada

Ao utilizar a autenticação de chave partilhada , o endpointe accountKeyaccountName tem de ser fornecido.

<ConnectionName>__endpoint = https://...table.core.windows.net

<ConnectionName>__credential__accountName = <account name>

<ConnectionName>__credential__accountKey = <account key>

Conceitos-chave

O enlace de entrada permite-lhe ler a tabela como entrada para uma Função do Azure. O enlace de saída permite-lhe modificar e eliminar linhas de tabela numa Função do Azure.

Siga o tutorial de enlace de entrada e o tutorial de enlace de saída para saber mais sobre como utilizar esta extensão para aceder ao serviço de tabelas.

Exemplos

As extensões de tabelas fornecem apenas enlaces. Os enlaces por si só não podem acionar uma função. Só pode ler ou escrever entradas na tabela.

No exemplo seguinte, utilizamos o acionador HTTP para invocar a função.

Vincular a uma única entidade

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"]}");
    }
}

Vincular a uma única entidade com o 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}");
    }
}

Vincular a múltiplas entidades com 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"]}");
        }
    }
}

Criar uma única entidade

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"
        };
    }
}

Criar uma única entidade com o 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"
        };
    }
}

Criar várias 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()
            });
        }
    }
}

Criar várias entidades com o 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()
            });
        }
    }
}

Binding to SDK TableClient type (Vincular ao tipo TableClient do SDK)

Utilize um parâmetro do método TableClient para aceder à tabela com o SDK de Tabelas do 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()
        });
    }
}

Resolução de problemas

Veja Monitorizar Funções do Azure para obter orientações de resolução de problemas.

Passos seguintes

Leia a introdução à Função do Azure ou ao criar um guia da Função do Azure.

Contribuir

Veja o CONTRIBUTING.md para obter detalhes sobre como criar, testar e contribuir para esta biblioteca.

Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para obter detalhes, visite cla.microsoft.com.

Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, consulte as FAQ do Código de Conduta ou contacte opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.

Impressões