共用方式為


使用系結將函式連線至 Azure 服務

當您建立函式時,您的專案中會從一組觸發程式範本新增語言特定的觸發程式代碼。 如果您想要使用輸入或輸出系結將函式連線到其他服務,則必須在函式中新增特定的系結定義。 若要深入了解繫結,請參閱 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 模型版本。

服務 範例 範例
Blob 儲存體 觸發程序
輸入
輸出
連結
Azure Cosmos DB 觸發程序
輸入
輸出
連結
Azure Data Explorer 輸入
輸出
Azure SQL 觸發程序
輸入
輸出
連結
事件方格 觸發程序
輸出
事件中樞 觸發程序
輸出
IoT 中心 觸發程序
輸出
HTTP 觸發程序 連結
佇列儲存體 觸發程序
輸出
RabbitMQ 觸發程序
輸出
SendGrid 輸出
服務匯流排 觸發程序
輸出
連結
Azure SignalR Service 觸發程序
輸入
輸出
表格儲存體 輸入
輸出
定時器 觸發程序
Twilio 輸出

Visual Studio Code

當您使用 Visual Studio Code 開發函式,而您的函式使用 function.json 檔案時,Azure Functions 擴充功能可以自動將系結新增至現有的 function.json 檔案。 若要深入瞭解,請參閱 新增輸入和輸出系結

Azure 入口網站

當您在 Azure 入口網站中開發函式時,您可以在指定函式的 [ 整合 ] 索引卷標中新增輸入和輸出系結。 新的系結會根據您的語言,新增至 function.json 檔案或方法屬性。 下列文章示範如何在入口網站中將系結新增至現有函式的範例:

後續步驟