O Azure Functions é um serviço provisionado na nuvem. Para criar um novo serviço acesse o Portal e adicione uma nova instância do Functions, escolha o HttpTrigger como tipo da função. Dentro do Functions adicione uma nova função, existem serviços beta de Proxy e Slots, mas não abordaremos eles neste artigo.
Dois arquivos já são criados automaticamente:
- run.csx: contém o script propriamente dito;
- function.json: metadados do script.
O function.json é um array de bindings, junto com uma propriedade enabled, que habilita ou desabilita a função.

Todos os bindings compartilham algumas propriedades:
Propriedade | Valores | Comentários |
type | string | Tipo de binding, por exemplo: queueTrigger. |
direction | ‘in’, ‘out’ | Indica se o valor é de entrada ou de saída. |
name | string | Nome que será atribuído ao binding. No C# torna-se o valor da variável e no Javascript uma estrutura de chave/valor |
Ao criar uma nova function, ela já vem com um código de exemplo pronta para rodar. A princípio é necessário apenas alterar o run.csx com seu script, porém muitas vezes utilizamos pacotes de terceiros, utilizando NuGets.
Os pacotes abaixo já estão incluídos na solução da Azure:
- mscorlib
- System
- System.Core
- System.Xml
- System.Net.Http
- Microsoft.Azure.WebJobs
- Microsoft.Azure.WebJobs.Host
- Microsoft.Azure.WebJobs.Extensions
- System.Web.Http
- System.Net.Http.Formatting
Caso seja necessário adicionar outros pacotes é necessário criar um arquivo chamado project.json, este arquivo conterá as informações dos pacotes adicionais que serão instalados no momento do build da solução.
O Azure Function automaticamente percebe alterações neste arquivo e executa o NuGet restore antes do próximo build.
Exemplo de formatação do project.json:
Configurados os metadados e as dependências o script já está pronto para rodar na nuvem. Para facilitar os testes a Azure tem a funcionalidade de fazer as chamadas pela plataforma.
Vale ressaltar que neste artigo abordamos um Function que tem como gatilho uma requisição HTTP mas é possível configurar outros tipos de gatilho, como por exemplo: funções agendadas, vinculadas a eventos do CosmosDB, ao GitHub entre outros.