Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando você cria uma função, o código de gatilho específico da linguagem é adicionado ao seu projeto a partir de um conjunto de modelos de gatilho. Se você quiser conectar sua função a outros serviços usando associações de entrada ou saída, será necessário adicionar definições de associação específicas em sua função. Para saber mais sobre associações, consulte Azure Functions conceitos de gatilhos e associações.
Desenvolvimento local
Ao desenvolver funções localmente, você precisa atualizar o código da função para adicionar associações. Para idiomas que usam function.json, Visual Studio Code fornece ferramentas para adicionar associações 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 associaçã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 associaçã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 de função, dependendo do modelo:
No Go, você configura os gatilhos suportados usando a API fluente de registro na sua função main(). Cada tipo de gatilho tem um método de registro dedicado com opções funcionais para configuração. Nenhum arquivo de configuração de associação separado é necessário.
O exemplo a seguir mostra uma função disparada por HTTP. Se você precisar gravar no Armazenamento de Filas a partir de uma função Go, use diretamente o SDK do Azure para Go, porque as associações de saída do Armazenamento de Filas ainda não têm suporte no momento 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 worker em Go atualmente oferece suporte apenas a gatilhos. As associações de entrada e saída, como associações de saída do Armazenamento de Filas, ainda não estão disponíveis. Use o SDK do Azure for Go para interagir com outros serviços Azure diretamente do código de função.
O worker em Go atualmente oferece suporte aos seguintes tipos de gatilho:
| Tipo de gatilho | Método de registro | Exemplos |
|---|---|---|
| HTTP | app.HTTP() |
exemplos de HTTP |
| Timer | app.Timer() |
Exemplos de Timer |
| Azure Cosmos DB | app.CosmosDB() |
Exemplos do Cosmos DB |
| Barramento de Serviço do Azure (Fila) | app.ServiceBusQueue() |
Exemplos de filas do Barramento de Serviço |
| Barramento de Serviço do Azure (Tópico) | app.ServiceBusTopic() |
Exemplos de tópicos do Barramento de Serviço |
| Hubs de Eventos | app.EventHub() |
Exemplos de Hubs de Eventos |
| Grade de Eventos | app.EventGrid() |
Exemplos do Event Grid |
| Armazenamento de Blobs | app.Blob() |
Exemplos de Blob |
Para obter mais informações, consulte a referência do desenvolvedor Go.
O exemplo a seguir mostra a definição de função depois de adicionar uma Associação de saída do Armazenamento de Filas a uma função disparada por HTTP:
Como uma função disparada por HTTP também retorna uma resposta HTTP, a função retorna um objeto MultiResponse, que representa a saída de HTTP e da fila.
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
Veja a seguir a definição do objeto MultiResponse que inclui a associação de saída:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
Este exemplo usa ASP.NET Core integration. Se você não estiver usando ASP.NET Core integração, precisará alterar 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 associação de saída depende do seu modelo de processo. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associaçõ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 o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associaçõ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 associação de saída depende da versão do modelo do Node.js. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.
$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg
Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associaçõ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 associação de saída depende da versão do modelo do Python. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associaçõ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 associação de saída depende da versão do modelo do Node.js. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associaçõ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 a guia de idioma que corresponde ao seu projeto.
O código de associação para C# depende do modelo de processo específico.
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Gatilho Input Output |
Link |
| Azure Cosmos DB |
Gatilho Input Output |
Link |
| Azure Data Explorer |
Input Output |
Link |
| SQL do Azure |
Gatilho Input Output |
Link |
| Grade de Eventos |
Gatilho Output |
Link |
| Hubs de Eventos |
Gatilho Output |
|
| Hub IoT |
Gatilho Output |
|
| HTTP | Gatilho | Link |
| Armazenamento de Filas |
Gatilho Output |
Link |
| RabbitMQ |
Gatilho Output |
|
| SendGrid | Output | |
| Barramento de Serviço |
Gatilho Output |
Link |
| Serviço do Azure SignalR |
Gatilho Input Output |
|
| Armazenamento de Tabelas |
Input Output |
|
| Temporizador | Gatilho | Link |
| Twilio | Output | Link |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Gatilho Input Output |
Link |
| Azure Cosmos DB |
Gatilho Input Output |
Link |
| Azure Data Explorer |
Input Output |
Link |
| SQL do Azure |
Gatilho Input Output |
|
| Grade de Eventos |
Gatilho Output |
Link |
| Hubs de Eventos |
Gatilho Output |
|
| Hub IoT |
Gatilho Output |
|
| HTTP | Gatilho | Link |
| Armazenamento de Filas |
Gatilho Output |
Link |
| RabbitMQ |
Gatilho Output |
|
| SendGrid | Output | |
| Barramento de Serviço |
Gatilho Output |
Link |
| Serviço do Azure SignalR |
Gatilho Input Output |
|
| Armazenamento de Tabelas |
Input Output |
|
| Temporizador | Gatilho | Link |
| Twilio | Output |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Gatilho Input Output |
Link |
| Azure Cosmos DB |
Gatilho Input Output |
Link |
| Azure Data Explorer |
Input Output |
|
| SQL do Azure |
Gatilho Input Output |
Link |
| Grade de Eventos |
Gatilho Output |
|
| Hubs de Eventos |
Gatilho Output |
|
| Hub IoT |
Gatilho Output |
|
| HTTP | Gatilho | Link |
| Armazenamento de Filas |
Gatilho Output |
Link |
| RabbitMQ |
Gatilho Output |
|
| SendGrid | Output | |
| Barramento de Serviço |
Gatilho Output |
Link |
| Serviço do Azure SignalR |
Gatilho Input Output |
|
| Armazenamento de Tabelas |
Input Output |
|
| Temporizador | Gatilho | |
| Twilio | Output |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Gatilho Input Output |
|
| Azure Cosmos DB |
Gatilho Input Output |
|
| SQL do Azure |
Gatilho Input Output |
|
| Grade de Eventos |
Gatilho Output |
|
| Hubs de Eventos |
Gatilho Output |
|
| Hub IoT |
Gatilho Output |
|
| HTTP | Gatilho | Link |
| Armazenamento de Filas |
Gatilho Output |
|
| RabbitMQ |
Gatilho Output |
|
| SendGrid | Output | |
| Barramento de Serviço |
Gatilho Output |
|
| Serviço do Azure SignalR |
Gatilho Input Output |
|
| Armazenamento de Tabelas |
Input Output |
|
| Temporizador | Gatilho | |
| Twilio | Output |
O código de ligação para Python depende da versão do modelo Python.
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Gatilho Input Output |
Link |
| Azure Cosmos DB |
Gatilho Input Output |
Link |
| Azure Data Explorer |
Input Output |
|
| SQL do Azure |
Gatilho Input Output |
Link |
| Grade de Eventos |
Gatilho Output |
|
| Hubs de Eventos |
Gatilho Output |
|
| Hub IoT |
Gatilho Output |
|
| HTTP | Gatilho | Link |
| Armazenamento de Filas |
Gatilho Output |
|
| RabbitMQ |
Gatilho Output |
|
| SendGrid | Output | |
| Barramento de Serviço |
Gatilho Output |
Link |
| Serviço do Azure SignalR |
Gatilho Input Output |
|
| Armazenamento de Tabelas |
Input Output |
|
| Temporizador | Gatilho | |
| Twilio | Output |
Visual Studio Code
Quando você usa Visual Studio Code para desenvolver sua função e sua função usa um arquivo function.json, a extensão Azure Functions pode adicionar automaticamente uma associação a um arquivo function.json existente. Para saber mais, confira Adicionar associações de entrada e saída.
portal do Azure
Ao desenvolver suas funções no Azure portal, você adiciona associações de entrada e saída na guia Integrate para uma determinada função. As novas associações são adicionadas ao arquivo function.json ou aos atributos do método, dependendo do idioma. Os artigos a seguir mostram exemplos de como adicionar associações a uma função existente no portal: