Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Quando crias uma função, o código de trigger específico da linguagem é adicionado ao teu projeto a partir de um conjunto de modelos de trigger. Se você quiser conectar sua função a outros serviços usando ligações de entrada ou saída, você precisa adicionar definições de vinculação específicas em sua função. Para saber mais sobre ligações, veja disparadores e conceitos de ligações do Funções do Azure.
Desenvolvimento local
Ao desenvolver funções localmente, você precisa atualizar o código da função para adicionar associações. Para linguagens que usam function.json, Visual Studio Code fornece ferramentas para adicionar bindings a uma função.
Adicionar associações manualmente com base em exemplos
Ao adicionar uma associação a uma função existente, você precisa adicionar atributos específicos de vinculação à definição de função no código.
Ao adicionar uma associação a uma função existente, você precisa adicionar anotações específicas de vinculação à definição de função no código.
Ao adicionar uma associação a uma função existente, você precisa atualizar o código da função e adicionar uma definição ao arquivo de configuração function.json.
Ao adicionar uma associação a uma função existente, você precisa atualizar a definição da função, dependendo do seu modelo:
No Go, configura os gatilhos suportados usando a API de registo fluente na sua main() função. Cada tipo de gatilho tem um método de registo dedicado com opções funcionais para configuração. Não é necessário um ficheiro de configuração de associação separado.
O exemplo seguinte mostra uma função desencadeada por HTTP. Se precisares de escrever no Queue Storage a partir de uma função Go, usa diretamente o SDK do Azure para Go, porque as ligações de saída do Queue Storage ainda não são suportadas pelo worker do Go:
package main
import (
"encoding/json"
"fmt"
"net/http"
"github.com/azure/azure-functions-golang-worker/sdk"
"github.com/azure/azure-functions-golang-worker/worker"
)
func main() {
app := sdk.FunctionApp()
app.HTTP("HttpExample", httpHandler,
sdk.WithMethods("GET", "POST"),
sdk.WithAuth("anonymous"),
)
worker.Start(app)
}
func httpHandler(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
if name == "" {
var body struct{ Name string }
json.NewDecoder(r.Body).Decode(&body)
name = body.Name
}
if name == "" {
w.WriteHeader(http.StatusBadRequest)
fmt.Fprint(w, "Please pass a name on the query string or in the request body.")
return
}
// Queue output bindings are not yet supported in the Go worker.
// Use the Azure SDK for Go to write to Queue Storage directly.
fmt.Fprintf(w, "Hello, %s!", name)
}
Note
O trabalhador do Go atualmente suporta apenas gatilhos. As ligações de entrada e saída, como as ligações de saída do Armazenamento em Fila, ainda não estão disponíveis. Use o SDK do Azure para Go para interagir diretamente com outros serviços Azure a partir do seu código de função.
O trabalhador Go suporta atualmente os seguintes tipos de gatilhos:
| Tipo de acionador | Método de registo | Exemplos |
|---|---|---|
| HTTP | app.HTTP() |
Exemplos de HTTP |
| Temporizador | app.Timer() |
Amostras do temporizador |
| Azure Cosmos DB | app.CosmosDB() |
Exemplos do Cosmos DB |
| Azure Service Bus (Fila) | app.ServiceBusQueue() |
Exemplos de fila do Service Bus |
| Azure Service Bus (Topic) | app.ServiceBusTopic() |
Exemplos de tópicos do Service Bus |
| Hubs de Eventos | app.EventHub() |
Exemplos de Hubs de Eventos |
| Grelha de Eventos | app.EventGrid() |
Amostras da Grelha de Eventos |
| Armazenamento de Blobs | app.Blob() |
Exemplos de blob |
Para mais informações, consulte a referência para programadores do Go.
O exemplo seguinte mostra a definição da função após adicionar uma vinculação de saída para Queue Storage a uma função acionada por HTTP:
Como uma função acionada por HTTP também retorna uma resposta HTTP, a função retorna um MultiResponse objeto, que representa a saída HTTP e a saída da fila.
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
Este exemplo é a definição do objeto MultiResponse que inclui a ligação de saída:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
Este exemplo utiliza integração ASP.NET Core. Se não estiveres a usar ASP.NET Core integração, tens de mudar HttpRequest para HttpRequestData e IActionResult para HttpResponseData.
As mensagens são enviadas para a fila quando a função é concluída. A maneira como você define a ligação de saída depende do seu modelo de processo. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.
@FunctionName("HttpExample")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "msg", queueName = "outqueue",
connection = "AzureWebJobsStorage") OutputBinding<String> msg,
final ExecutionContext context) {
Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.
const { app, output } = require('@azure/functions');
const sendToQueue = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [sendToQueue],
handler: async (request, context) => {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
},
});
A maneira como você define a ligação de saída depende da versão do seu modelo de Node.js. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.
$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg
Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.
@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
A maneira como você define a ligação de saída depende da versão do seu modelo Python. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.
import {
app,
output,
HttpRequest,
HttpResponseInit,
InvocationContext,
StorageQueueOutput,
} from '@azure/functions';
const sendToQueue: StorageQueueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
export async function HttpExample(
request: HttpRequest,
context: InvocationContext,
): Promise<HttpResponseInit> {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
}
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
handler: HttpExample,
});
A maneira como você define a ligação de saída depende da versão do seu modelo de Node.js. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.
Use a tabela a seguir para encontrar exemplos de tipos de associação específicos que você pode usar para orientá-lo na atualização de uma função existente. Primeiro, escolha o separador de língua que corresponde ao seu projecto.
O código de vinculação para C# depende do modelo de processo específico.
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Acionador Input Output |
Link |
| Azure Cosmos DB |
Acionador Input Output |
Link |
| Azure Data Explorer |
Input Output |
Link |
| SQL do Azure |
Acionador Input Output |
Link |
| Event Grid |
Acionador Output |
Link |
| Hubs de Eventos |
Acionador Output |
|
| Hub IoT |
Acionador Output |
|
| HTTP | Acionador | Link |
| Armazenamento de Filas |
Acionador Output |
Link |
| RabbitMQ |
Acionador Output |
|
| SendGrid | Output | |
| Barramento de Serviço |
Acionador Output |
Link |
| Azure SignalR Service |
Acionador Input Output |
|
| Armazenamento de Tabelas |
Input Output |
|
| Temporizador | Acionador | Link |
| Twilio | Output | Link |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Acionador Input Output |
Link |
| Azure Cosmos DB |
Acionador Input Output |
Link |
| Azure Data Explorer |
Input Output |
Link |
| SQL do Azure |
Acionador Input Output |
|
| Event Grid |
Acionador Output |
Link |
| Hubs de Eventos |
Acionador Output |
|
| Hub IoT |
Acionador Output |
|
| HTTP | Acionador | Link |
| Armazenamento de Filas |
Acionador Output |
Link |
| RabbitMQ |
Acionador Output |
|
| SendGrid | Output | |
| Barramento de Serviço |
Acionador Output |
Link |
| Azure SignalR Service |
Acionador Input Output |
|
| Armazenamento de Tabelas |
Input Output |
|
| Temporizador | Acionador | Link |
| Twilio | Output |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Acionador Input Output |
Link |
| Azure Cosmos DB |
Acionador Input Output |
Link |
| Azure Data Explorer |
Input Output |
|
| SQL do Azure |
Acionador Input Output |
Link |
| Event Grid |
Acionador Output |
|
| Hubs de Eventos |
Acionador Output |
|
| Hub IoT |
Acionador Output |
|
| HTTP | Acionador | Link |
| Armazenamento de Filas |
Acionador Output |
Link |
| RabbitMQ |
Acionador Output |
|
| SendGrid | Output | |
| Barramento de Serviço |
Acionador Output |
Link |
| Azure SignalR Service |
Acionador Input Output |
|
| Armazenamento de Tabelas |
Input Output |
|
| Temporizador | Acionador | |
| Twilio | Output |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Acionador Input Output |
|
| Azure Cosmos DB |
Acionador Input Output |
|
| SQL do Azure |
Acionador Input Output |
|
| Event Grid |
Acionador Output |
|
| Hubs de Eventos |
Acionador Output |
|
| Hub IoT |
Acionador Output |
|
| HTTP | Acionador | Link |
| Armazenamento de Filas |
Acionador Output |
|
| RabbitMQ |
Acionador Output |
|
| SendGrid | Output | |
| Barramento de Serviço |
Acionador Output |
|
| Azure SignalR Service |
Acionador Input Output |
|
| Armazenamento de Tabelas |
Input Output |
|
| Temporizador | Acionador | |
| Twilio | Output |
O código de vinculação para Python depende da versão do modelo Python.
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Acionador Input Output |
Link |
| Azure Cosmos DB |
Acionador Input Output |
Link |
| Azure Data Explorer |
Input Output |
|
| SQL do Azure |
Acionador Input Output |
Link |
| Event Grid |
Acionador Output |
|
| Hubs de Eventos |
Acionador Output |
|
| Hub IoT |
Acionador Output |
|
| HTTP | Acionador | Link |
| Armazenamento de Filas |
Acionador Output |
|
| RabbitMQ |
Acionador Output |
|
| SendGrid | Output | |
| Barramento de Serviço |
Acionador Output |
Link |
| Azure SignalR Service |
Acionador Input Output |
|
| Armazenamento de Tabelas |
Input Output |
|
| Temporizador | Acionador | |
| Twilio | Output |
Visual Studio Code
Quando usas Visual Studio Código para desenvolver a tua função e a tua função usa um ficheiro function.json, a extensão Funções do Azure pode adicionar automaticamente uma ligação a um ficheiro de function.json existente. Para saber mais, consulte Adicionar ligações de entrada e saída.
portal do Azure
Quando desenvolves as tuas funções no Azure portal, adicionas ligações de entrada e saída no separador Integrar para uma dada função. As novas associações são adicionadas ao arquivo function.json ou aos atributos do método, dependendo do seu idioma. Os artigos a seguir mostram exemplos de como adicionar associações a uma função existente no portal: