Explorar os tipos de associação de entrada e de saída

Concluído

Acessar e processar dados são as principais tarefas em muitas soluções de software. Considere alguns destes cenários:

  • Foi solicitado que você implemente uma forma de mover os dados de entrada do Armazenamento de Blobs do Azure para o Azure Cosmos DB.
  • Você deseja postar mensagens de entrada em uma fila para que elas sejam processadas por outro componente em sua empresa.
  • O serviço precisa obter as pontuações do jogador de uma fila e atualizar um placar online.

Todos esses exemplos tratam de como mover dados. A fonte de dados e os destinos diferem de cenário para cenário, mas o padrão é semelhante. Você se conecta a uma fonte de dados, lê e grava dados. O Azure Functions ajuda você a integrar dados e serviços usando associações.

O que é uma associação?

No Azure Functions, as associações fornecem uma maneira declarativa de se conectar aos dados por meio do código. Elas facilitam a integração com fluxos de dados de forma consistente em uma função. Você pode ter várias associações que fornecem acesso a diferentes elementos de dados. Essa integração é poderosa porque você pode se conectar às fontes de dados sem precisar codificar uma lógica de conexão específica (como conexões de banco de dados ou interfaces de API Web).

Tipos de associações

Há dois tipos de associações que você pode usar com funções:

  • Associação de entrada – conectar a uma fontede dados. Nossa função pode ler dados dessas fontes de entrada.

  • Associação de saída – conectar a um destinode dados. Nossa função pode gravar dados nesses destinos de saída.

Temos também os gatilhos, que são tipos especiais de associações de entrada que fazem com que uma função seja executada. Por exemplo, uma notificação da Grade de Eventos do Azure pode ser configurada como um gatilho. Quando um evento ocorre, a função é executada.

Tipos de associações compatíveis

O tipo de associação define onde estamos lendo ou enviando dados. Há uma associação para responder a solicitações da Web e uma grande seleção de associações para interagir diretamente com vários serviços do Azure e serviços de terceiros.

Um tipo de associação pode ser usado como uma entrada, uma saída ou ambos. Por exemplo, uma função pode ser gravada na associação de saída de um Armazenamento de Blobs do Azure, mas uma atualização do Armazenamento de Blobs pode disparar outra função.

Os tipos de associação comuns incluem:

  • Armazenamento de Blobs
  • Filas do Barramento de Serviço do Azure
  • Azure Cosmos DB
  • Hubs de Eventos do Azure
  • Arquivos externos
  • Tabelas externas
  • Pontos de extremidade HTTP

Esses tipos são apenas exemplos. Existem mais e, além disso, as funções têm um modelo de extensibilidade para adição de mais associações.

Propriedades da associação

Três propriedades são necessárias em todas as associações, embora você precise fornecer mais propriedades com base no tipo de associação e armazenamento que você está usando.

  • Nome – define o parâmetro de função por meio do qual você acessa os dados. Por exemplo, em uma associação de entrada de fila, essa propriedade é o nome do parâmetro de função que recebe o conteúdo da mensagem da fila.

  • Tipo – identifica o tipo de associação. Por exemplo, o tipo de dados ou serviço com o qual você deseja interagir.

  • Direção – indica que os dados de direção estão fluindo. Por exemplo, trata-se de uma associação de entrada ou saída?

Além disso, a maioria dos tipos de associação também precisa de uma quarta propriedade:

  • Conexão – fornece o nome de uma chave de configuração de aplicativo que contém a cadeia de conexão. As associações usam cadeias de conexão armazenadas nas configurações de aplicativo para manter os segredos fora do código da função. As cadeias de conexão tornam seu código mais configurável e seguro.

Criar uma associação

As associações são definidas em JSON. A associação é configurada no arquivo de configuração da função, que se chama function.json e reside na mesma pasta que o código da função.

Vamos examinar uma associação de entrada de exemplo:

    ...
    {
      "name": "headshotBlob",
      "type": "blob",
      "path": "thumbnail-images/{filename}",
      "connection": "HeadshotStorageConnection",
      "direction": "in"
    },
    ...

Para criar essa associação, vamos:

  1. Criar uma associação no arquivo function.json.

  2. Fornecer o valor para a variável name. Neste exemplo, a variável contém os dados de blob.

  3. Fornecer o armazenamento type. No exemplo anterior, usamos o Armazenamento de Blobs.

  4. Forneça o path, que especifica o contêiner e o nome do item que ele conterá. A propriedade path é necessária ao usar o gatilho de blob e deve ser fornecida no estilo mostrado aqui, com chaves em volta da parte de nome de arquivo do caminho. Essa sintaxe cria uma expressão de associação que permite que você referencie o nome do blob em outras associações e no código da função. Neste exemplo, um parâmetro na função chamada filename seria populado com o nome de arquivo do blob que disparou a função.

  5. Forneça o nome da configuração de cadeia de caracteres connection definido no arquivo de configurações do aplicativo. Ele é usado como uma chave para encontrar a cadeia de conexão usada para conectar-se à conta de armazenamento.

  6. Definir a direction como in. Ela lê dados de blob.

As associações são usadas para conectar-se a dados na função. Neste exemplo, usamos uma associação de entrada para conectar imagens de usuário para processamento por nossa função como miniaturas.