次の方法で共有


バインドを使用して関数をAzure サービスに接続する

関数を作成すると、一連のトリガー テンプレートから言語固有のトリガー コードがprojectに追加されます。 入力バインドまたは出力バインドを使用して関数を他のサービスに接続する場合は、関数に特定のバインド定義を追加する必要があります。 バインディングの詳細については、「Azure Functions トリガーとバインドの概念を参照してください。

ローカル開発

関数をローカルで開発する場合は、関数コードを更新してバインドを追加する必要があります。 function.json を使用する言語の場合、Visual Studio Code は関数にバインドを追加するためのツールを提供します。

例に基づいてバインドを手動で追加する

既存の関数にバインドを追加する場合は、コード内の関数定義にバインド固有の属性を追加する必要があります。

既存の関数にバインドを追加する場合は、コード内の関数定義にバインド固有の注釈を追加する必要があります。

既存の関数にバインドを追加する場合は、関数コードを更新し、function.json 構成ファイルに定義を追加する必要があります。

既存の関数にバインドを追加する場合は、モデルに応じて関数定義を更新する必要があります。

コード内の関数定義にバインド固有の注釈を追加する必要があります。

次の例は、Queue Storage出力バインドHTTP によってトリガーされる関数

HTTP によってトリガーされる関数は HTTP 応答も返すため、この関数は、HTTP とキューの両方の出力を表す MultiResponse オブジェクトを返します。

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{

この出力バインディングを含む MultiResponse オブジェクトの定義の例をこちらに示します。

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

この例では、ASP.NET Core integration を使用します。 ASP.NET Core統合を使用していない場合は、HttpRequestHttpRequestData に、IActionResultHttpResponseData に変更する必要があります。

メッセージは、関数が完了したときにキューに送信されます。 出力バインドを定義する方法は、プロセス モデルによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

@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 モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

次の表を使用して、既存の関数の更新に役立つ特定のバインドの種類の例を見つけます。 まず、projectに対応する言語タブを選択します。

C# のバインド コードは、具体的なプロセス モデルによって異なります。

サービス 例示 サンプル
Blob Storage(ブロブ ストレージ) トリガー
Input
Output
Link
Azure Cosmos DB トリガー
入力
アウトプット
Link
Azure Data Explorer(データ探索サービス) Input
Output
Link
Azure SQL トリガー (Trigger)
Input
Output
Link
Event Grid トリガー
アウトプット
Link
Event Hubs トリガー
アウトプット
IoT Hub トリガー
アウトプット
HTTP トリガー Link
キュー ストレージ トリガー
Output
Link
RabbitMQ(メッセージブローカーソフトウェア) トリガー
アウトプット
SendGrid アウトプット
サービスバス トリガー
アウトプット
Link
Azure SignalR Service トリガー
入力
アウトプット
テーブル ストレージ Input
Output
タイマー トリガー Link
Twilio アウトプット Link
サービス 例示 サンプル
Blob Storage(ブロブ ストレージ) トリガー
Input
Output
Link
Azure Cosmos DB トリガー
入力
アウトプット
Link
Azure Data Explorer(データ探索サービス) Input
Output
Link
Azure SQL トリガー
Input
Output
Event Grid トリガー
アウトプット
Link
Event Hubs トリガー
アウトプット
IoT Hub トリガー
アウトプット
HTTP トリガー Link
キュー ストレージ トリガー
Output
Link
RabbitMQ(メッセージブローカーソフトウェア) トリガー
アウトプット
SendGrid アウトプット
サービスバス トリガー
アウトプット
Link
Azure SignalR Service トリガー
入力
アウトプット
テーブル ストレージ Input
Output
タイマー トリガー Link
Twilio アウトプット
サービス 例示 サンプル
Blob Storage(ブロブ ストレージ) トリガー
Input
Output
Link
Azure Cosmos DB トリガー
入力
アウトプット
Link
Azure Data Explorer(データ探索サービス) Input
Output
Azure SQL トリガー
Input
Output
Link
Event Grid トリガー
アウトプット
Event Hubs トリガー
アウトプット
IoT Hub トリガー
アウトプット
HTTP トリガー Link
キュー ストレージ トリガー
Output
Link
RabbitMQ(メッセージブローカーソフトウェア) トリガー
アウトプット
SendGrid アウトプット
サービスバス トリガー
アウトプット
Link
Azure SignalR Service トリガー
入力
アウトプット
テーブル ストレージ Input
Output
タイマー トリガー
Twilio アウトプット
サービス 例示 サンプル
Blob Storage(ブロブ ストレージ) トリガー
Input
Output
Azure Cosmos DB トリガー
入力
アウトプット
Azure SQL トリガー
Input
Output
Event Grid トリガー
アウトプット
Event Hubs トリガー
アウトプット
IoT Hub トリガー
アウトプット
HTTP トリガー Link
キュー ストレージ トリガー
Output
RabbitMQ(メッセージブローカーソフトウェア) トリガー
アウトプット
SendGrid アウトプット
サービスバス トリガー
アウトプット
Azure SignalR Service トリガー
入力
アウトプット
テーブル ストレージ Input
Output
タイマー トリガー
Twilio アウトプット

Python のバインド コードは、Python モデルのバージョンによって異なります。

サービス 例示 サンプル
Blob Storage(ブロブ ストレージ) トリガー
Input
Output
Link
Azure Cosmos DB トリガー
入力
アウトプット
Link
Azure Data Explorer(データ探索サービス) Input
Output
Azure SQL トリガー
Input
Output
Link
Event Grid トリガー
アウトプット
Event Hubs トリガー
アウトプット
IoT Hub トリガー
アウトプット
HTTP トリガー Link
キュー ストレージ トリガー
Output
RabbitMQ(メッセージブローカーソフトウェア) トリガー
アウトプット
SendGrid アウトプット
サービスバス トリガー
アウトプット
Link
Azure SignalR Service トリガー
入力
アウトプット
テーブル ストレージ Input
Output
タイマー トリガー
Twilio アウトプット

Visual Studio コード

Visual Studio Code を使用して関数を開発し、関数が function.json ファイルを使用する場合、Azure Functions拡張機能は、既存の function.json ファイルにバインドを自動的に追加できます。 詳細については、「 入力バインドと出力バインドの追加」を参照してください。

Azure portal

Azure portal で関数を開発するときは、特定の関数の Integrate タブに入力バインドと出力バインドを追加します。 新しいバインドは、言語に応じて、function.json ファイルまたはメソッド属性に追加されます。 次の記事では、ポータルで既存の関数にバインドを追加する方法の例を示します。

次のステップ