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.json
definiçõ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 endpoint
e accountKey
accountName
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.