Explorar a entrada e a saída de tipos de enlace

Concluído

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

  • Você foi solicitado a implementar uma maneira de mover dados de entrada do Armazenamento de Blobs do Azure para o Azure Cosmos DB.
  • Deseja publicar mensagens de entrada para uma fila para processamento por outro componente da sua empresa.
  • O serviço tem de obter pontuações de jogadores de uma fila e de atualizar resultados online.

Todos estes exemplos estão relacionados com a movimentação de dados. A origem e os destinos de dados diferem de um cenário para o outro, mas o padrão é semelhante. Estabelece ligação a uma origem de dados, lê e escreve dados. As Funções do Azure ajudam-no a integrar dados e serviços através de enlaces.

O que é um enlace?

Nas Funções do Azure, os vínculos proporcionam uma forma declarativa de se ligar a dados a partir do seu código. Facilitam a integração com fluxos de dados de forma consistente numa função. Pode ter vários vínculos que forneçam acesso a elementos de dados diferentes. Essa integração é poderosa porque você pode se conectar às suas fontes de dados sem ter que codificar uma lógica de conexão específica (como conexões de banco de dados ou interfaces de API da Web).

Tipos de enlaces

Existem dois tipos de enlaces que pode utilizar com funções:

  • Vinculação de entrada - Conecta-se a uma fonte de dados. Nossa função pode ler dados dessas fontes de entrada.

  • Vinculação de saída - Conecta-se a um destino de dados. Nossa função pode gravar dados nesses destinos de saída.

Há também gatilhos, que são tipos especiais de ligações de entrada que fazem com que uma função seja executada. Por exemplo, uma notificação do Azure Event Grid pode ser configurada como um acionador. Quando ocorre um evento, a função é executada.

Tipos de vínculos suportados

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 ligação pode ser usado como entrada, saída ou ambos. Por exemplo, uma função pode gravar em uma ligação de saída de Armazenamento de Blob, mas uma atualização de Armazenamento de Blob pode acionar outra função.

Os tipos de vinculação comuns incluem:

  • Armazenamento de Blobs
  • Filas do Azure Service Bus
  • BD do Cosmos para o Azure
  • Azure Event Hubs
  • Ficheiros externos
  • Tabelas externas
  • Pontos finais HTTP

Estes tipos são apenas uma amostra. Existem mais, as funções Plus possuem um modelo de extensibilidade para adicionar mais vínculos.

Propriedades de vínculos

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

  • Nome – define o parâmetro de função através do qual pode aceder aos 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.

  • Type - Identifica o tipo de ligação. Por exemplo, o tipo de dados ou serviço com o qual você deseja interagir.

  • Direção - Indica a direção em que os dados estão fluindo. Por exemplo, é uma ligação de entrada ou saída?

Além disso, a maioria dos tipos de vínculo necessita ainda de uma quarta propriedade:

  • Ligação – fornece o nome de uma chave de definição de aplicação que contém a cadeia de ligação. Os enlaces utilizam cadeias de ligação armazenadas nas definições da aplicação para manter os segredos fora do código de função. As cadeias de conexão tornam seu código mais configurável e seguro.

Criar um vínculo

Os enlaces são definidos em JSON. Um enlace é configurado no ficheiro de configuração da sua função, que é denominado function.json e reside na mesma pasta que o código de função.

Vamos examinar um exemplo de enlace de entrada:

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

Para criarmos este enlace:

  1. Criamos um enlace no nosso ficheiro function.json.

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

  3. Fornecemos o armazenamento type. No exemplo anterior, estamos usando o Armazenamento de Blobs.

  4. Fornecemos o path, que especifica o contentor e o nome do item que é incluído no mesmo. A path propriedade é necessária ao usar o gatilho de blob e deve ser fornecida no estilo mostrado aqui, com chaves ao redor da parte do nome do arquivo do caminho. Essa sintaxe cria uma expressão de ligação que permite fazer referência ao nome do blob em outras associações e no código da sua função. Neste exemplo, um parâmetro na função chamada filename seria preenchido com o nome de ficheiro do blob que acionou a função.

  5. Fornecemos o nome de definição da cadeia connection definido no ficheiro de definições da aplicação. É utilizado como uma chave para localizar a cadeia de ligação para ligar à sua conta de armazenamento.

  6. Definimos direction como in. Os dados são lidos a partir do blob.

Os enlaces são utilizados para ligar aos dados na sua função. Neste exemplo, usamos uma ligação de entrada para conectar imagens do usuário para processamento por nossa função como miniaturas.