Criar gatilhos e ligações
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 dataType
propriedade 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 eout
- Algumas ligações suportam uma direção
inout
especial. Se utilizarinout
o , 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 é order
order
.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: