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.jsonschema

對於依賴 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 的其他選項為 streamstring

繫結方向

所有觸發程式和系結都有 direction function.json 檔案中的 屬性:

  • 對於觸發程序,方向一律為 in
  • 輸入和輸出繫結使用 inout
  • 部分繫結支援特殊方向 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 資料總管 輸入
輸出
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 模型版本。

服務 範例 範例
Blob 儲存體 觸發程序
輸入
輸出
連結
Azure Cosmos DB 觸發程序
輸入
輸出
連結
Azure 資料總管 輸入
輸出
Azure SQL 觸發程序
輸入
輸出
連結
Event Grid 觸發程序
輸出
連結
事件中樞 觸發程序
輸出
IoT 中樞 觸發程序
輸出
HTTP 觸發程序 連結
佇列儲存體 觸發程序
輸出
連結
RabbitMQ 觸發程序
輸出
SendGrid 輸出
服務匯流排 觸發程序
輸出
連結
SignalR 觸發程序
輸入
輸出
表格儲存體 輸入
輸出
計時器 觸發程序 連結
Twilio 輸出 連結

自定義系結

您可以建立自訂輸入和輸出系結。 系結必須以 .NET 撰寫,但可以從任何支援的語言取用。 如需建立自定義系結的詳細資訊,請參閱 建立自定義輸入和輸出系結。

資源

下一步