當您建立函式時,您的專案中會從一組觸發程式範本新增語言特定的觸發程式代碼。 如果您想要使用輸入或輸出系結將函式連線到其他服務,則必須在函式中新增特定的系結定義。 若要深入了解繫結,請參閱 Azure Functions 觸發程序和繫結概念。
本地開發
當您在本機開發函式時,您必須更新函式程式代碼以新增系結。 對於使用 function.json的語言, Visual Studio Code 提供工具將系結新增至函式。
根據範例手動新增系結
將系結新增至現有函式時,您必須在程式碼中將系結特定屬性新增至函式定義。
將系結新增至現有函式時,您必須在程式碼中將系結特定的批註新增至函式定義。
將系結新增至現有的函式時,您需要更新函式程序代碼,並將定義新增至 function.json 組態檔。
下列範例會顯示在將 佇列儲存體輸出繫結 新增至 由 HTTP 觸發的函式 之後的函式定義:
因為由 HTTP 觸發的函式也會傳回 HTTP 回應,因此函式會傳回 MultiResponse 物件,此物件會同時代表 HTTP 輸出和佇列輸出。
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
FunctionContext executionContext)
{
這個範例是包含輸出繫結的 MultiResponse 物件的定義:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
將該範例套用至您自己的專案時,視乎於您是否使用 ASP.NET Core 整合而定,您可能需要將 HttpRequest 變更為 HttpRequestData,以及將 IActionResult 變更為 HttpResponseData。
訊息會在函式完成時傳送至佇列。 輸出繫結的定義方式取決於流程模型。 如需詳細資訊,包括您可以參考的範例繫結程式碼之連結,請參閱 將繫結新增至函式。
@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) {
如需詳細資訊,包括您可以參考的範例繫結程式碼之連結,請參閱 將繫結新增至函式。
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' };
}
},
});
輸出繫結的定義方式取決於 Node.js 模型的版本。 如需詳細資訊,包括您可以參考的範例繫結程式碼之連結,請參閱 將繫結新增至函式。
$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg
如需詳細資訊,包括您可以參考的範例繫結程式碼之連結,請參閱 將繫結新增至函式。
@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.')
輸出繫結的定義方式取決於您 Python 模型的版本。 如需詳細資訊,包括您可以參考的範例繫結程式碼之連結,請參閱 將繫結新增至函式。
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,
});
輸出繫結的定義方式取決於 Node.js 模型的版本。 如需詳細資訊,包括您可以參考的範例繫結程式碼之連結,請參閱 將繫結新增至函式。
使用下表來尋找可用來引導您更新現有函式的特定系結類型範例。 首先,選擇對應專案的語言索引標籤。
C# 的繫結程式碼取決於 特定的流程模型。
| 服務 | 範例 | 範例 |
|---|---|---|
| Blob 儲存體 |
觸發程序 輸入 輸出 |
連結 |
| Azure Cosmos DB |
觸發程序 輸入 輸出 |
連結 |
| Azure Data Explorer |
輸入 輸出 |
連結 |
| Azure SQL |
觸發程序 輸入 輸出 |
連結 |
| 事件方格 |
觸發程序 輸出 |
連結 |
| 事件中樞 |
觸發程序 輸出 |
|
| IoT 中心 |
觸發程序 輸出 |
|
| HTTP | 觸發程序 | 連結 |
| 佇列儲存體 |
觸發程序 輸出 |
連結 |
| RabbitMQ |
觸發程序 輸出 |
|
| SendGrid | 輸出 | |
| 服務匯流排 |
觸發程序 輸出 |
連結 |
| Azure SignalR Service |
觸發程序 輸入 輸出 |
|
| 表格儲存體 |
輸入 輸出 |
|
| 定時器 | 觸發程序 | 連結 |
| Twilio | 輸出 | 連結 |
| 服務 | 範例 | 範例 |
|---|---|---|
| Blob 儲存體 |
觸發程序 輸入 輸出 |
連結 |
| Azure Cosmos DB |
觸發程序 輸入 輸出 |
連結 |
| Azure Data Explorer |
輸入 輸出 |
連結 |
| Azure SQL |
觸發程序 輸入 輸出 |
|
| 事件方格 |
觸發程序 輸出 |
連結 |
| 事件中樞 |
觸發程序 輸出 |
|
| IoT 中心 |
觸發程序 輸出 |
|
| HTTP | 觸發程序 | 連結 |
| 佇列儲存體 |
觸發程序 輸出 |
連結 |
| RabbitMQ |
觸發程序 輸出 |
|
| SendGrid | 輸出 | |
| 服務匯流排 |
觸發程序 輸出 |
連結 |
| Azure SignalR Service |
觸發程序 輸入 輸出 |
|
| 表格儲存體 |
輸入 輸出 |
|
| 定時器 | 觸發程序 | 連結 |
| Twilio | 輸出 |
| 服務 | 範例 | 範例 |
|---|---|---|
| Blob 儲存體 |
觸發程序 輸入 輸出 |
連結 |
| Azure Cosmos DB |
觸發程序 輸入 輸出 |
連結 |
| Azure Data Explorer |
輸入 輸出 |
|
| Azure SQL |
觸發程序 輸入 輸出 |
連結 |
| 事件方格 |
觸發程序 輸出 |
|
| 事件中樞 |
觸發程序 輸出 |
|
| IoT 中心 |
觸發程序 輸出 |
|
| HTTP | 觸發程序 | 連結 |
| 佇列儲存體 |
觸發程序 輸出 |
連結 |
| RabbitMQ |
觸發程序 輸出 |
|
| SendGrid | 輸出 | |
| 服務匯流排 |
觸發程序 輸出 |
連結 |
| Azure SignalR Service |
觸發程序 輸入 輸出 |
|
| 表格儲存體 |
輸入 輸出 |
|
| 定時器 | 觸發程序 | |
| Twilio | 輸出 |
| 服務 | 範例 | 範例 |
|---|---|---|
| Blob 儲存體 |
觸發程序 輸入 輸出 |
|
| Azure Cosmos DB |
觸發程序 輸入 輸出 |
|
| Azure SQL |
觸發程序 輸入 輸出 |
|
| 事件方格 |
觸發程序 輸出 |
|
| 事件中樞 |
觸發程序 輸出 |
|
| IoT 中心 |
觸發程序 輸出 |
|
| HTTP | 觸發程序 | 連結 |
| 佇列儲存體 |
觸發程序 輸出 |
|
| RabbitMQ |
觸發程序 輸出 |
|
| SendGrid | 輸出 | |
| 服務匯流排 |
觸發程序 輸出 |
|
| Azure SignalR Service |
觸發程序 輸入 輸出 |
|
| 表格儲存體 |
輸入 輸出 |
|
| 定時器 | 觸發程序 | |
| Twilio | 輸出 |
Python 的繫結程式碼取決於 Python 模型版本。
Visual Studio Code
當您使用 Visual Studio Code 開發函式,而您的函式使用 function.json 檔案時,Azure Functions 擴充功能可以自動將系結新增至現有的 function.json 檔案。 若要深入瞭解,請參閱 新增輸入和輸出系結。
Azure 入口網站
當您在 Azure 入口網站中開發函式時,您可以在指定函式的 [ 整合 ] 索引卷標中新增輸入和輸出系結。 新的系結會根據您的語言,新增至 function.json 檔案或方法屬性。 下列文章示範如何在入口網站中將系結新增至現有函式的範例: