Azure Functions 觸發程序和繫結概念
在本文中,您將瞭解有關函式觸發程式和系結的高階概念。
觸發程序會導致函式執行。 觸發程序會定義如何叫用函數,而且函式必須只有一個觸發程序。 觸發程序具有相關聯的資料,它通常提供作為函式的承載。
繫結至函式是以宣告方式將另一個資源連接到函式的方式;繫結能以「輸入繫結」、「輸出繫結」或兩者連接。 繫結中的資料會提供給函式作為參數。
您可以混合使用不同繫結,以符合您的需求。 繫結是選擇性的,而且一個函數可能有一或多個輸入和/或輸出繫結。
觸發程序和繫結可讓您避免硬式編碼對其他服務的存取。 您的函式會接收函式參數中的資料 (例如,佇列訊息的內容)。 您可以使用函式的傳回值來傳送資料 (例如,用以建立佇列訊息)。
請考慮下列範例,說明如何實作不同的函式。
範例案例 | 觸發程序 | 輸入繫結 | 輸出繫結 |
---|---|---|---|
新的佇列訊息抵達,它會執行函式以寫入另一個佇列。 | 佇列* | None | 佇列* |
排程的作業會讀取 Blob 儲存體 內容,並建立新的 Azure Cosmos DB 檔。 | 計時器 | Blob 儲存體 | Azure Cosmos DB |
事件方格可用來從 Blob 儲存體 讀取影像,以及從 Azure Cosmos DB 傳送電子郵件的檔。 | Event Grid | Blob 儲存體 和 Azure Cosmos DB | SendGrid |
使用 Microsoft Graph 更新 Excel 工作表的 Webhook。 | HTTP | None | Microsoft Graph |
* 代表不同的佇列
這些範例並非詳盡的,但會提供來說明如何使用觸發程式和系結。
觸發程序和繫結定義
根據開發語言,觸發程序和繫結會以不同方式定義。
語言 | 觸發程序和繫結透過下列方式設定... |
---|---|
C# 類別庫 | 使用 C# 屬性裝飾方法和參數 |
Java | 使用 JAVA 註釋裝飾方法和參數 |
JavaScript/PowerShell/Python/TypeScript | updateing function.json (schema) |
對於依賴 function.json 的語言,入口網站會提供 UI 以在 [整合] 索引標籤中新增繫結。您也可以在函式的 [程式碼 + 測試] 索引標籤中,直接在入口網站編輯檔案。 Visual Studio Code 可讓您遵循一組方便的提示,輕鬆地 將系結新增至 function.json 檔案 。
在 .NET 和 JAVA 中,參數類型會定義輸入資料的資料類型。 例如,使用 string
繫結至佇列觸發程序的文字、要以二進位讀取的位元組陣列,以及要還原序列化為物件的自訂類型。 由於 .NET 類別庫函式和 JAVA 函式不依賴 function.json 進行繫結定義,因此無法在入口網站中建立和編輯。 C# 入口網站編輯是以 C# 指令碼為基礎,使用 function.json 而不是屬性。
若要深入瞭解如何將系結新增至現有函式,請參閱使用系結將函式 連線 至 Azure 服務。
對於 JavaScript 等具有動態類型的語言,則會使用 function.json 檔案中的 dataType
屬性。 例如,若要讀取二進位格式的 HTTP 要求內容,請將 dataType
設定為 binary
:
{
"dataType": "binary",
"type": "httpTrigger",
"name": "req",
"direction": "in"
}
dataType
的其他選項為 stream
和 string
。
繫結方向
所有觸發程式和系結都有 direction
function.json 檔案中的 屬性:
- 對於觸發程序,方向一律為
in
- 輸入和輸出繫結使用
in
和out
- 部分繫結支援特殊方向
inout
。 如果您使用inout
,則只有入口網站 [整合] 索引標籤的 [進階編輯器] 可供使用。
當您在類別庫中使用屬性來設定觸發程式和系結時,方向會在屬性建構函式中提供,或從參數類型推斷。
將系結新增至函式
您可以使用輸入或輸出系結,將函式連線到其他服務。 將系結的特定定義新增至函式,以新增系結。 若要瞭解如何,請參閱 將系結新增至 Azure Functions 中的現有函式。
支援的系結
下表顯示 Azure Functions 執行時間主要版本中支援的系結:
類型 | 1.x1 | 2.x 和更新版本 2 | 觸發程序 | 輸入 | 輸出 |
---|---|---|---|---|---|
Blob 儲存體 | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure 資料總管 | ✔ | ✔ | ✔ | ||
Azure SQL | ✔ | ✔ | ✔ | ✔ | |
達普4 | ✔ | ✔ | ✔ | ✔ | |
Event Grid | ✔ | ✔ | ✔ | ✔ | |
事件中樞 | ✔ | ✔ | ✔ | ✔ | |
HTTP 和 Webhook | ✔ | ✔ | ✔ | ✔ | |
IoT 中樞 | ✔ | ✔ | ✔ | ||
Kafka3 | ✔ | ✔ | ✔ | ||
Mobile Apps | ✔ | ✔ | ✔ | ||
通知中樞 | ✔ | ✔ | |||
佇列儲存體 | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | |||
RabbitMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
服務匯流排 | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
表格儲存體 | ✔ | ✔ | ✔ | ✔ | |
計時器 | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
1支援將於 2026 年 9 月 14 日結束於 Azure Functions 運行時間 1.x 版。 強烈建議您將 應用程式移轉至 4.x 版,以取得完整支援。
2 從 2.x 版運行時間開始,HTTP 和定時器以外的所有系結都必須註冊。 請參閱 註冊系結延伸模組。
3 取用方案中不支援觸發程式。 需要運行時間驅動的觸發程式。
4 僅支援 Kubernetes、IoT Edge 和其他自我裝載模式。
如需哪些系結處於預覽狀態或已核准用於生產環境的資訊,請參閱 支援的語言。
只有在支援基礎服務 SDK 時,才支援特定的系結延伸模組版本。 基礎服務 SDK 版本中支援的變更會影響取用延伸模組的支援。
繫結程式碼範例
使用下表來尋找特定系結類型的範例,示範如何在函式中使用系結。 首先,選擇對應至您項目的語言索引標籤。
C# 的系結程式代碼取決於 特定進程模型。
服務 | 範例 | 範例 |
---|---|---|
Blob 儲存體 | 觸發程序 輸入 輸出 |
連結 |
Azure Cosmos DB | 觸發程序 輸入 輸出 |
連結 |
Azure 資料總管 | 輸入 輸出 |
連結 |
Azure SQL | 觸發程序 輸入 輸出 |
|
Event Grid | 觸發程序 輸出 |
連結 |
事件中樞 | 觸發程序 輸出 |
|
IoT 中樞 | 觸發程序 輸出 |
|
HTTP | 觸發程序 | 連結 |
佇列儲存體 | 觸發程序 輸出 |
連結 |
RabbitMQ | 觸發程序 輸出 |
|
SendGrid | 輸出 | |
服務匯流排 | 觸發程序 輸出 |
連結 |
SignalR | 觸發程序 輸入 輸出 |
|
表格儲存體 | 輸入 輸出 |
|
計時器 | 觸發程序 | 連結 |
Twilio | 輸出 | 連結 |
服務 | 範例 | 範例 |
---|---|---|
Blob 儲存體 | 觸發程序 輸入 輸出 |
連結 |
Azure Cosmos DB | 觸發程序 輸入 輸出 |
連結 |
Azure 資料總管 | 輸入 輸出 |
|
Azure SQL | 觸發程序 輸入 輸出 |
連結 |
Event Grid | 觸發程序 輸出 |
連結 |
事件中樞 | 觸發程序 輸出 |
|
IoT 中樞 | 觸發程序 輸出 |
|
HTTP | 觸發程序 | 連結 |
佇列儲存體 | 觸發程序 輸出 |
連結 |
RabbitMQ | 觸發程序 輸出 |
|
SendGrid | 輸出 | |
服務匯流排 | 觸發程序 輸出 |
連結 |
SignalR | 觸發程序 輸入 輸出 |
|
表格儲存體 | 輸入 輸出 |
|
計時器 | 觸發程序 | 連結 |
Twilio | 輸出 | 連結 |
服務 | 範例 | 範例 |
---|---|---|
Blob 儲存體 | 觸發程序 輸入 輸出 |
連結 |
Azure Cosmos DB | 觸發程序 輸入 輸出 |
連結 |
Azure SQL | 觸發程序 輸入 輸出 |
|
Event Grid | 觸發程序 輸出 |
連結 |
事件中樞 | 觸發程序 輸出 |
|
IoT 中樞 | 觸發程序 輸出 |
|
HTTP | 觸發程序 | 連結 |
佇列儲存體 | 觸發程序 輸出 |
連結 |
RabbitMQ | 觸發程序 輸出 |
|
SendGrid | 輸出 | |
服務匯流排 | 觸發程序 輸出 |
連結 |
SignalR | 觸發程序 輸入 輸出 |
|
表格儲存體 | 輸入 輸出 |
|
計時器 | 觸發程序 | 連結 |
Twilio | 輸出 | 連結 |
Python 的系結程式代碼取決於 Python 模型版本。
自定義系結
您可以建立自訂輸入和輸出系結。 系結必須以 .NET 撰寫,但可以從任何支援的語言取用。 如需建立自定義系結的詳細資訊,請參閱 建立自定義輸入和輸出系結。