Visão geral das associações de armazenamento de Blob do Azure para o Azure Functions

O Azure Functions integra-se com o Armazenamento do Azure por meio de gatilhos e associações. A integração com o armazenamento de Blob permite criar funções que reagem a alterações nos dados de blob, bem como valores de leitura e gravação.

Ação Tipo
Executar uma função como alterações de dados de armazenamento de blob Acionador
Ler dados de armazenamento de blob em uma função Vinculação de entrada
Permitir que uma função escreva dados de armazenamento de blob Vinculação de saída

Instalar a extensão

O pacote de extensão NuGet que você instala depende do modo C# que você está usando em seu aplicativo de função:

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

A funcionalidade da extensão varia dependendo da versão da extensão:

Esta versão introduz a capacidade de se conectar usando uma identidade em vez de um segredo. Para obter um tutorial sobre como configurar seus aplicativos de função com identidades gerenciadas, consulte o tutorial de criação de um aplicativo de função com conexões baseadas em identidade.

Esta versão permite que você se associe a tipos de Azure.Storage.Blobs. Saiba mais sobre como esses novos tipos são diferentes e WindowsAzure.StorageMicrosoft.Azure.Storage como migrar para eles no Guia de Migração Azure.Storage.Blobs.

Adicione a extensão ao seu projeto instalando o pacote NuGet Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs, versão 5.x ou posterior.

Usando a CLI do .NET:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs

Nota

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

Anteriormente, as extensões eram fornecidas juntas como Microsoft.Azure.Functions.Worker.Extensions.Storage, versão 4.x. Este mesmo pacote também tem uma versão 5.x, que faz referência aos pacotes divididos apenas para blobs e filas. Ao atualizar suas referências de pacote de versões mais antigas, talvez seja necessário fazer referência adicional ao novo pacote NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables . Além disso, ao fazer referência a esses pacotes divididos mais recentes, certifique-se de não estar 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 delegado que usa um IFunctionsWorkerApplication parâmetro. Em seguida, dentro do corpo desse delegado, chame ConfigureBlobStorageExtension() o objeto:

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

Instalar pacote

A associação de armazenamento de Blob faz 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 da associação ou se os pacotes ainda não estiverem instalados. Para saber mais, consulte Pacote de extensão.

Esta versão introduz a capacidade de se conectar usando uma identidade em vez de um segredo. Para obter um tutorial sobre como configurar seus aplicativos de função com identidades gerenciadas, consulte o tutorial de criação de um aplicativo de função 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 host.json arquivo:

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

Para saber mais, consulte Atualizar suas extensões.

Tipos de vinculação

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

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

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

O processo de trabalho isolado suporta tipos de parâmetros de acordo com as tabelas abaixo.

Gatilho de blob

O gatilho de blob pode se ligar aos seguintes tipos:

Tipo Description
string O conteúdo de blob como uma cadeia de caracteres. Use quando o conteúdo do blob for texto simples.
byte[] Os bytes do conteúdo do blob.
Tipos serializáveis JSON Quando um blob contém dados JSON, o Functions tenta desserializar os dados JSON em um tipo de objeto CLR (POCO) simples.
Fluxo1 Um fluxo de entrada do conteúdo do blob.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Um cliente conectado ao blob. Esse conjunto de tipos oferece mais controle para processar o blob e pode ser usado para gravar novamente no blob se a conexão tiver permissão suficiente.

1 Para usar esses tipos, você precisa fazer referência a Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 ou posterior e às dependências comuns para associações de tipo SDK.

Ligação de entrada de Blob

Quando você deseja que a função processe um único blob, a ligação de entrada de blob pode se vincular aos seguintes tipos:

Tipo Description
string O conteúdo de blob como uma cadeia de caracteres. Use quando o conteúdo do blob for texto simples.
byte[] Os bytes do conteúdo do blob.
Tipos serializáveis JSON Quando um blob contém dados JSON, o Functions tenta desserializar os dados JSON em um tipo de objeto CLR (POCO) simples.
Fluxo1 Um fluxo de entrada do conteúdo do blob.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Um cliente conectado ao blob. Esse conjunto de tipos oferece o maior controle para processar o blob e pode ser usado para gravar nele se a conexão tiver permissão suficiente.

Quando você deseja que a função processe vários blobs de um contêiner, a ligação de entrada de blob pode se vincular aos seguintes tipos:

Tipo Description
T[] ou List<T> onde T é um dos tipos de ligação de entrada de blob único Uma matriz ou lista de vários blobs. Cada entrada representa um blob do contêiner. Você também pode vincular a quaisquer interfaces implementadas por esses tipos, como IEnumerable<T>.
BlobContainerClient1 Um cliente conectado ao contêiner. Esse tipo oferece o maior controle para processar o contêiner e pode ser usado para gravar nele se a conexão tiver permissão suficiente.

1 Para usar esses tipos, você precisa fazer referência a Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 ou posterior e às dependências comuns para associações de tipo SDK.

Ligação de saída de blob

Quando você deseja que a função grave em um único blob, a ligação de saída de blob pode se vincular aos seguintes tipos:

Tipo Description
string O conteúdo de blob como uma cadeia de caracteres. Use quando o conteúdo do blob for texto simples.
byte[] Os bytes do conteúdo do blob.
Tipos serializáveis JSON Um objeto que representa o conteúdo de um blob JSON. As funções tentam serializar um tipo de objeto CLR (POCO) antigo em dados JSON.

Quando você deseja que a função grave em vários blobs, a ligação de saída de blob pode se vincular aos seguintes tipos:

Tipo Description
T[] onde T é um dos tipos de ligação de saída de blob único Uma matriz que contém conteúdo para vários blobs. Cada entrada representa o conteúdo de um blob.

Para outros cenários de saída, crie e use tipos de Azure.Storage.Blobs diretamente.

configurações host.json

Esta seção descreve as definições de configuração do aplicativo de função disponíveis para funções que usam essa associação. Essas configurações só se aplicam ao usar a extensão versão 5.0.0 e superior. O arquivo host.json de exemplo abaixo contém apenas as configurações da versão 2.x+ para essa ligação. Para obter mais informações sobre definições de configuração de aplicativo de função nas versões 2.x e versões posteriores, consulte referência host.json para o Azure Functions.

Nota

Esta seção não se aplica a versões de extensão anteriores à 5.0.0. Para essas versões anteriores, não há nenhuma definição de configuração funcional em todo o aplicativo para blobs.

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4,
            "poisonBlobThreshold": 1
        }
    }
}
Propriedade Predefinição Description
maxGraudeParalelismo 8 * (o número de núcleos disponíveis) O número inteiro de invocações simultâneas permitido para todas as funções acionadas por blob em um determinado aplicativo de função. O valor mínimo permitido é 1.
poisonBlobThreshold 5 O número inteiro de vezes para tentar processar uma mensagem antes de movê-la para a fila de venenos. O valor mínimo permitido é 1.

Próximos passos