Compartilhar via


Associações das Tabelas do Azure para o Azure Functions

O Azure Functions integra-se com as Tabelas do Azure por meio de gatilhos e associações. A integração com as Tabelas do Azure permite criar funções que leem e gravam dados usando o Azure Cosmos DB for Table e o Armazenamento de Tabelas do Azure.

Ação Type
Ler os dados da tabela em uma função Associação de entrada
Permitir que uma função grave os dados da tabela Associação de saída

Instalar a extensão

O pacote NuGet da extensão instalado depende do modo C# usado no aplicativo de funções:

As funções são executadas em um processo de trabalho do C# isolado. Para saber mais, confira o Guia para executar C# do Azure Functions em um processo de trabalho isolado.

O processo para instalar a extensão varia de acordo com a versão da extensão:

Essa versão apresenta a capacidade de se conectar usando uma identidade em vez de um segredo. Para ver um tutorial sobre a configuração de aplicativos de funções com identidades gerenciadas, confira o tutorial sobre como criar um aplicativo de funções com conexões baseadas em identidade.

Ela permite que você se associe a tipos do Azure.Data.Tables. Ela também apresenta a capacidade de usar o Azure Cosmos DB for Table.

Essa extensão está disponível instalando o pacote NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables em um projeto usando a versão 5.x ou superior da extensão para blobs e filas.

Usando a CLI do .NET:

# Install the Azure Tables extension
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Tables --version 1.0.0

# Update the combined Azure Storage extension (to a version which no longer includes Azure Tables)
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage --version 5.0.0

Observação

Agora, os Blobs do Azure, as Filas do Azure e as Tabelas do Azure usam extensões separadas e são referenciados individualmente. Por exemplo, para usar os gatilhos e as associações para os três serviços no aplicativo de processo isolado .NET, você deve adicionar os seguintes pacotes ao projeto:

Anteriormente, as extensões eram enviadas juntas como Microsoft.Azure.Functions.Worker.Extensions.Storage, versão 4.x. Esse mesmo pacote também tem uma versão 5.x, que faz referência apenas aos pacotes divididos para blobs e filas. Ao atualizar as referências de pacote de versões mais antigas, talvez seja necessário também fazer referência ao novo pacote NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables. Além disso, ao referenciar esses pacotes divididos mais recentes, verifique se você não está fazendo referência a uma versão mais antiga do pacote de armazenamento combinado, pois isso resultará em conflitos de duas definições das mesmas associações.

Se você estiver escrevendo seu aplicativo usando F#, também deverá configurar essa extensão como parte da configuração de inicialização do aplicativo. Na chamada para ConfigureFunctionsWorkerDefaults() ou ConfigureFunctionsWebApplication(), adicione um representante que usa um parâmetro IFunctionsWorkerApplication. Em seguida, dentro do corpo desse representante, chame ConfigureTablesExtension() no objeto:

let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
    appBuilder.ConfigureTablesExtension() |> ignore
) |> ignore

Instalar pacote

As associações de Tabelas do Azure fazem parte de um pacote de extensão, que é especificado no arquivo de projeto host.json. Talvez seja necessário modificar esse pacote para alterar a versão das associações ou se os pacotes ainda não estiverem instalados. Para saber mais, confira pacotes de extensão.

Essa versão apresenta a capacidade de se conectar usando uma identidade em vez de um segredo. Para ver um tutorial sobre a configuração de aplicativos de funções com identidades gerenciadas, confira o tutorial sobre como criar um aplicativo de funções com conexões baseadas em identidade.

Você pode adicionar esta versão da extensão do pacote de extensão v3 adicionando ou substituindo o seguinte código em seu arquivo host.json:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

Tipos de associação

Os tipos de associação com suporte para .NET dependem da versão da extensão e do modo de execução do C#, que pode ser um dos seguintes:

Uma função C# compilada da biblioteca de classes do processo de trabalho isolado é executada em um processo isolado do runtime.

Escolha uma versão para ver os detalhes do tipo de associação para o modo e a versão.

O processo de trabalho isolado dá suporte a tipos de parâmetro de acordo com a tabela abaixo. O suporte à associação aos tipos das Azure.Data.Tables está em versão prévia.

Associação de entrada das Tabelas do Azure

Ao trabalhar com uma única entidade de tabela, a associação de entrada das Tabelas do Azure pode ser associada aos seguintes tipos:

Type Descrição
Um tipo de JSON serializável que implementa ITableEntity O Functions tenta desserializar a entidade em um tipo de objeto CRL básico antigo (POCO). O tipo deve implementar uma [ITableEntity] ou ter uma propriedade RowKey de cadeia de caracteres e uma propriedade PartitionKey de cadeia de caracteres.
TableEntity1 A entidade como um tipo semelhante a um dicionário.

Ao trabalhar com várias entidades de uma consulta, a associação de entrada das Tabelas do Azure pode ser associada aos seguintes tipos:

Type Descrição
IEnumerable<T> onde T implementa ITableEntity Uma enumeração de entidades retornada pela consulta. Cada entrada representa uma entidade. O tipo T deve implementar uma [ITableEntity] ou ter uma propriedade RowKey de cadeia de caracteres e uma propriedade PartitionKey de cadeia de caracteres.
TableClient1 Um cliente conectado à tabela. Isso oferece a maior parte do controle para processar a tabela e pode ser usado para gravar nela se a conexão tiver permissão suficiente.

1 Para usar esses tipos, você precisará mencionar o Microsoft.Azure.Functions.Worker.Extensions.CosmosDB 1.2.0 ou posterior e as dependências comuns para associações do tipo SDK.

Associação de saída das Tabelas do Azure

Quando você quiser que a função seja gravada em uma única entidade, a associação de saída das Tabelas do Azure poderá ser associada aos seguintes tipos:

Type Descrição
Um tipo de JSON serializável que implementa [ITableEntity] O Functions tenta serializar um tipo de objeto CRL básico antigo (POCO) como a entidade. O tipo deve implementar uma [ITableEntity] ou ter uma propriedade RowKey de cadeia de caracteres e uma propriedade PartitionKey de cadeia de caracteres.

Quando você quiser que a função seja gravada em várias entidades, a associação de saída das Tabelas do Azure poderá ser associada aos seguintes tipos:

Type Descrição
T[] onde T é um dos tipos de entidade única Uma matriz contendo várias entidades. Cada entrada representa uma entidade.

Para outros cenários de saída, crie e use um TableClient com outros tipos diretamente de Azure.Data.Tables . Consulte Registrar clientes do Azure para obter um exemplo de como usar a injeção de dependência para criar um tipo de cliente do SDK do Azure.

Próximas etapas