Criar gatilhos e ligações

Concluído

Os gatilhos fazem com que uma função seja executada. Um acionador define como uma função é invocada e uma função tem de ter exatamente um acionador. Os acionadores têm dados associados, que são geralmente fornecidos como o payload da função.

A vinculação a uma função é uma forma de conectar declarativamente outro recurso à função; As ligações podem ser conectadas como ligações de entrada, ligações de saída ou ambas. Os dados de enlaces são fornecidos à função como parâmetros.

Pode combinar e corresponder enlaces diferentes consoante as suas necessidades. Os enlaces são opcionais e uma função pode ter um ou mais enlaces de entrada e/ou de saída.

Gatilhos e associações permitem evitar o acesso de codificação a outros serviços. A sua função recebe dados (por exemplo, os conteúdos de uma mensagem de fila) em parâmetros de função. Pode enviar dados (por exemplo, para criar uma mensagem de fila) através do valor de retorno da função.

Definições de desencadeamento e vinculativas

Gatilhos e ligações são definidos de forma diferente dependendo da linguagem de desenvolvimento.

Idioma Gatilhos e ligações são configurados por...
Biblioteca de classes C# métodos e parâmetros de decoração com atributos C#
Java métodos e parâmetros de decoração com anotações Java
JavaScript/PowerShell/Python/TypeScript atualizando o esquema function.json

Para idiomas que dependem de function.json, o portal fornece uma interface do usuário para adicionar associações na guia Integração . Você também pode editar o arquivo diretamente no portal na guia Código + teste da sua função.

Em .NET e Java, o tipo de parâmetro define o tipo de dados para dados de entrada. Por exemplo, use string para vincular ao texto de um gatilho de fila, uma matriz de bytes para ler como binário e um tipo personalizado para desserializar para um objeto. Como as funções da biblioteca de classes .NET e as funções Java não dependem de function.json para definições de ligação, elas não podem ser criadas e editadas no portal. A edição do portal C# é baseada no script C#, que usa function.json em vez de atributos.

Para linguagens que são digitadas dinamicamente, como JavaScript, use a dataTypepropriedade no arquivo function.json . Por exemplo, para ler o conteúdo de uma solicitação HTTP em formato binário, defina dataType como binary:

{
    "dataType": "binary",
    "type": "httpTrigger",
    "name": "req",
    "direction": "in"
}

Outras opções para dataType são stream e string.

Direção da vinculação

Todos os gatilhos e ligações têm uma propriedade direction no arquivo function.json :

  • Para gatilhos, a direção é sempre in
  • Utilização in de ligações de entrada e saída e out
  • Algumas ligações suportam uma direção inoutespecial. Se utilizar inouto , apenas o editor Avançado estará disponível através do separador Integrar no portal.

Quando você usa atributos em uma biblioteca de classes para configurar gatilhos e associações, a direção é fornecida em um construtor de atributos ou inferida a partir do tipo de parâmetro.

Exemplo de acionadores e de enlaces das Funções do Azure

Suponha que você queira escrever uma nova linha no armazenamento de Tabela do Azure sempre que uma nova mensagem aparecer no armazenamento de Filas do Azure. Este cenário pode ser implementado com um acionador do armazenamento de Filas do Azure e um enlace de saída do armazenamento de Tabelas do Azure.

Aqui está um arquivo function.json para esse cenário.

{
  "bindings": [
    {
      "type": "queueTrigger",
      "direction": "in",
      "name": "order",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "type": "table",
      "direction": "out",
      "name": "$return",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

O primeiro elemento na bindings matriz é o gatilho de armazenamento de fila. As type propriedades e direction identificam o gatilho. A name propriedade identifica o parâmetro de função que recebe o conteúdo da mensagem da fila. O nome da fila a ser monitorada está em queueName, e a cadeia de conexão está na configuração do aplicativo identificada por connection.

O segundo elemento na matriz é a bindings associação de saída do Armazenamento de Tabela do Azure. As type propriedades e direction identificam a ligação. A name propriedade especifica como a função fornece a nova linha da tabela, neste caso usando o valor de retorno da função. O nome da tabela está em tableName, e a cadeia de conexão está na configuração do aplicativo identificada por connection.

Exemplo de script C#

Aqui está o código de script C# que funciona com esse gatilho e ligação. Observe que o nome do parâmetro que fornece o conteúdo da mensagem da fila é ; esse nome é necessário porque o valor da propriedade em function.json é orderorder.name

#r "Newtonsoft.Json"

using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;

// From an incoming queue message that is a JSON object, add fields and write to Table storage
// The method return value creates a new row in Table Storage
public static Person Run(JObject order, ILogger log)
{
    return new Person() { 
            PartitionKey = "Orders", 
            RowKey = Guid.NewGuid().ToString(),  
            Name = order["Name"].ToString(),
            MobileNumber = order["MobileNumber"].ToString() };  
}

public class Person
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Name { get; set; }
    public string MobileNumber { get; set; }
}

Exemplo de JavaScript

O mesmo arquivo function.json pode ser usado com uma função JavaScript:

// From an incoming queue message that is a JSON object, add fields and write to Table Storage
module.exports = async function (context, order) {
    order.PartitionKey = "Orders";
    order.RowKey = generateRandomId(); 

    context.bindings.order = order;
};

function generateRandomId() {
    return Math.random().toString(36).substring(2, 15) +
        Math.random().toString(36).substring(2, 15);
}

Exemplo de biblioteca de classes

Em uma biblioteca de classes, as mesmas informações de gatilho e associação — nomes de fila e tabela, contas de armazenamento, parâmetros de função para entrada e saída — são fornecidas por atributos em vez de um arquivo function.json . Eis um exemplo:

public static class QueueTriggerTableOutput
{
    [FunctionName("QueueTriggerTableOutput")]
    [return: Table("outTable", Connection = "MY_TABLE_STORAGE_ACCT_APP_SETTING")]
    public static Person Run(
        [QueueTrigger("myqueue-items", Connection = "MY_STORAGE_ACCT_APP_SETTING")]JObject order,
        ILogger log)
    {
        return new Person() {
                PartitionKey = "Orders",
                RowKey = Guid.NewGuid().ToString(),
                Name = order["Name"].ToString(),
                MobileNumber = order["MobileNumber"].ToString() };
    }
}

public class Person
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Name { get; set; }
    public string MobileNumber { get; set; }
}

Recurso adicional

Para obter exemplos mais detalhados de gatilhos e vinculações, visite: