Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al crear una función, se agrega código de desencadenador específico del lenguaje en el proyecto a partir de un conjunto de plantillas de desencadenador. Si desea conectar la función a otros servicios mediante enlaces de entrada o salida, debe agregar definiciones de enlace específicas en la función. Para más información acerca de los enlaces, consulte Conceptos básicos sobre los enlaces y desencadenadores de Azure Functions.
Desarrollo local
Al desarrollar funciones localmente, debe actualizar el código de función para agregar enlaces. Para los lenguajes que usan function.json, Visual Studio Code proporciona herramientas para agregar enlaces a una función.
Agregar enlaces manualmente en función de ejemplos
Al agregar un enlace a una función existente, debe agregar atributos específicos del enlace a la definición de función en el código.
Al agregar un enlace a una función existente, debe agregar anotaciones específicas del enlace a la definición de función en el código.
Al agregar un enlace a una función existente, debe actualizar el código de función y agregar una definición al archivo de configuración de function.json.
Al agregar un enlace a una función existente, necesita actualizar la definición de función, en función del modelo:
En el ejemplo siguiente se muestra la definición de función después de agregar un Enlace de salida de Queue Storage a una función desencadenada por HTTP:
Dado que una función activada por HTTP también devuelve una respuesta HTTP, la función devuelve un objeto MultiResponse
, que representa tanto la salida HTTP como la de la cola.
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
FunctionContext executionContext)
{
Este ejemplo muestra la definición del objeto MultiResponse
, que incluye el enlace de salida:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
Al aplicar ese ejemplo a su propio proyecto, es posible que tenga que cambiar HttpRequest
por HttpRequestData
y IActionResult
por HttpResponseData
, dependiendo de si usa integración ASP.NET Core o no.
Los mensajes se envían a la cola cuando se completa la función. La forma de definir el enlace de salida depende de su modelo de proceso. Para obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.
@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 obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.
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' };
}
},
});
La forma de definir el enlace de salida depende de la versión del modelo de Node.js. Para obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.
$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg
Para obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.
@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.')
La forma de definir el enlace de salida depende de la versión del modelo de Python. Para obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.
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,
});
La forma de definir el enlace de salida depende de la versión del modelo de Node.js. Para obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.
Use la tabla siguiente para buscar ejemplos de tipos de enlace específicos que puede usar para guiarle en la actualización de una función existente. En primer lugar, elija la pestaña de lenguaje que corresponde al proyecto.
El código de enlace para C# depende del modelo de proceso específico.
Servicio | Ejemplos | Muestras |
---|---|---|
Blob Storage |
Desencadenador Entrada Salida |
Vínculo |
Azure Cosmos DB (la base de datos de Azure Cosmos) |
Desencadenador Entrada Salida |
Vínculo |
Explorador de Datos de Azure |
Entrada Salida |
Vínculo |
Azure SQL |
Desencadenador Entrada Salida |
Vínculo |
Cuadrícula de Eventos |
Desencadenador Salida |
Vínculo |
Event Hubs |
Desencadenador Salida |
|
IoT Hub |
Desencadenador Salida |
|
HTTP | Desencadenador | Vínculo |
Queue Storage |
Desencadenador Salida |
Vínculo |
RabbitMQ |
Desencadenador Salida |
|
SendGrid | Salida | |
Bus de Servicio |
Desencadenador Salida |
Vínculo |
SignalR |
Desencadenador Entrada Salida |
|
Almacenamiento de tablas |
Entrada Salida |
|
Temporizador | Desencadenador | Vínculo |
Twilio | Salida | Vínculo |
Servicio | Ejemplos | Muestras |
---|---|---|
Blob Storage |
Desencadenador Entrada Salida |
Vínculo |
Azure Cosmos DB (la base de datos de Azure Cosmos) |
Desencadenador Entrada Salida |
Vínculo |
Explorador de Datos de Azure |
Entrada Salida |
Vínculo |
Azure SQL |
Desencadenador Entrada Salida |
|
Cuadrícula de Eventos |
Desencadenador Salida |
Vínculo |
Event Hubs |
Desencadenador Salida |
|
IoT Hub |
Desencadenador Salida |
|
HTTP | Desencadenador | Vínculo |
Queue Storage |
Desencadenador Salida |
Vínculo |
RabbitMQ |
Desencadenador Salida |
|
SendGrid | Salida | |
Bus de Servicio |
Desencadenador Salida |
Vínculo |
SignalR |
Desencadenador Entrada Salida |
|
Almacenamiento de tablas |
Entrada Salida |
|
Temporizador | Desencadenador | Vínculo |
Twilio | Salida | Vínculo |
Servicio | Ejemplos | Muestras |
---|---|---|
Blob Storage |
Desencadenador Entrada Salida |
Vínculo |
Azure Cosmos DB (la base de datos de Azure Cosmos) |
Desencadenador Entrada Salida |
Vínculo |
Explorador de Datos de Azure |
Entrada Salida |
|
Azure SQL |
Desencadenador Entrada Salida |
Vínculo |
Cuadrícula de Eventos |
Desencadenador Salida |
Vínculo |
Event Hubs |
Desencadenador Salida |
|
IoT Hub |
Desencadenador Salida |
|
HTTP | Desencadenador | Vínculo |
Queue Storage |
Desencadenador Salida |
Vínculo |
RabbitMQ |
Desencadenador Salida |
|
SendGrid | Salida | |
Bus de Servicio |
Desencadenador Salida |
Vínculo |
SignalR |
Desencadenador Entrada Salida |
|
Almacenamiento de tablas |
Entrada Salida |
|
Temporizador | Desencadenador | Vínculo |
Twilio | Salida | Vínculo |
Servicio | Ejemplos | Muestras |
---|---|---|
Blob Storage |
Desencadenador Entrada Salida |
Vínculo |
Azure Cosmos DB (la base de datos de Azure Cosmos) |
Desencadenador Entrada Salida |
Vínculo |
Azure SQL |
Desencadenador Entrada Salida |
|
Cuadrícula de Eventos |
Desencadenador Salida |
Vínculo |
Event Hubs |
Desencadenador Salida |
|
IoT Hub |
Desencadenador Salida |
|
HTTP | Desencadenador | Vínculo |
Queue Storage |
Desencadenador Salida |
Vínculo |
RabbitMQ |
Desencadenador Salida |
|
SendGrid | Salida | |
Bus de Servicio |
Desencadenador Salida |
Vínculo |
SignalR |
Desencadenador Entrada Salida |
|
Almacenamiento de tablas |
Entrada Salida |
|
Temporizador | Desencadenador | Vínculo |
Twilio | Salida | Vínculo |
El código de enlace para Python dependerá de la versión del modelo de Python.
Servicio | Ejemplos | Muestras |
---|---|---|
Blob Storage |
Desencadenador Entrada Salida |
Vínculo |
Azure Cosmos DB (la base de datos de Azure Cosmos) |
Desencadenador Entrada Salida |
Vínculo |
Explorador de Datos de Azure |
Entrada Salida |
|
Azure SQL |
Desencadenador Entrada Salida |
Vínculo |
Cuadrícula de Eventos |
Desencadenador Salida |
Vínculo |
Event Hubs |
Desencadenador Salida |
|
IoT Hub |
Desencadenador Salida |
|
HTTP | Desencadenador | Vínculo |
Queue Storage |
Desencadenador Salida |
Vínculo |
RabbitMQ |
Desencadenador Salida |
|
SendGrid | Salida | |
Bus de Servicio |
Desencadenador Salida |
Vínculo |
SignalR |
Desencadenador Entrada Salida |
|
Almacenamiento de tablas |
Entrada Salida |
|
Temporizador | Desencadenador | Vínculo |
Twilio | Salida | Vínculo |
Código de Visual Studio
Cuando se usa Visual Studio Code para desarrollar la función y la función usa un archivo function.json, la extensión de Azure Functions puede agregar automáticamente un enlace a un archivo function.json existente. Para más información, consulte Incorporación de enlaces de entrada y salida.
Portal de Azure
Al desarrollar las funciones en Azure Portal, se agregan enlaces de entrada y salida en la pestaña Integrar de una función determinada. Los nuevos enlaces se agregan al archivo function.json o a los atributos del método, en función del idioma. En los artículos siguientes se muestran ejemplos de cómo agregar enlaces a una función existente en el portal: