次の方法で共有


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

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

ローカル開発

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

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

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

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

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

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

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

次の例は、キュー ストレージの出力バインドHTTP によってトリガーされる関数に追加した後の関数の定義を示しています。

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

[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; }
}

この例を独自のプロジェクトに適用する際には、HttpRequestを使用しているかどうかによって、HttpRequestDataIActionResult に、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# のバインド コードは、具体的なプロセス モデルによって異なります。

サービス 例示 サンプル
ブロブストレージ トリガー
入力
アウトプット
リンク
Azure Cosmos DB (アジュール コスモス データベース) トリガー
入力
アウトプット
リンク
アジュール データ エクスプローラー (Azure Data Explorer) 入力
アウトプット
リンク
Azure SQL トリガー
入力
アウトプット
リンク
イベントグリッド トリガー
アウトプット
リンク
イベント ハブ トリガー
アウトプット
IoT ハブ トリガー
アウトプット
HTTP トリガー リンク
キュー記憶域 トリガー
アウトプット
リンク
RabbitMQ(メッセージブローカーソフトウェア) トリガー
アウトプット
SendGrid アウトプット
サービスバス トリガー
アウトプット
リンク
SignalR トリガー
入力
アウトプット
テーブル ストレージ 入力
アウトプット
タイマー トリガー リンク
Twilio アウトプット リンク
サービス 例示 サンプル
ブロブストレージ トリガー
入力
アウトプット
リンク
Azure Cosmos DB (アジュール コスモス データベース) トリガー
入力
アウトプット
リンク
アジュール データ エクスプローラー (Azure Data Explorer) 入力
アウトプット
リンク
Azure SQL トリガー
入力
アウトプット
イベントグリッド トリガー
アウトプット
リンク
イベント ハブ トリガー
アウトプット
IoT ハブ トリガー
アウトプット
HTTP トリガー リンク
キュー記憶域 トリガー
アウトプット
リンク
RabbitMQ(メッセージブローカーソフトウェア) トリガー
アウトプット
SendGrid アウトプット
サービスバス トリガー
アウトプット
リンク
SignalR トリガー
入力
アウトプット
テーブル ストレージ 入力
アウトプット
タイマー トリガー リンク
Twilio アウトプット リンク
サービス 例示 サンプル
ブロブストレージ トリガー
入力
アウトプット
リンク
Azure Cosmos DB (アジュール コスモス データベース) トリガー
入力
アウトプット
リンク
アジュール データ エクスプローラー (Azure Data Explorer) 入力
アウトプット
Azure SQL トリガー
入力
アウトプット
リンク
イベントグリッド トリガー
アウトプット
リンク
イベント ハブ トリガー
アウトプット
IoT ハブ トリガー
アウトプット
HTTP トリガー リンク
キュー記憶域 トリガー
アウトプット
リンク
RabbitMQ(メッセージブローカーソフトウェア) トリガー
アウトプット
SendGrid アウトプット
サービスバス トリガー
アウトプット
リンク
SignalR トリガー
入力
アウトプット
テーブル ストレージ 入力
アウトプット
タイマー トリガー リンク
Twilio アウトプット リンク
サービス 例示 サンプル
ブロブストレージ トリガー
入力
アウトプット
リンク
Azure Cosmos DB (アジュール コスモス データベース) トリガー
入力
アウトプット
リンク
Azure SQL トリガー
入力
アウトプット
イベントグリッド トリガー
アウトプット
リンク
イベント ハブ トリガー
アウトプット
IoT ハブ トリガー
アウトプット
HTTP トリガー リンク
キュー記憶域 トリガー
アウトプット
リンク
RabbitMQ(メッセージブローカーソフトウェア) トリガー
アウトプット
SendGrid アウトプット
サービスバス トリガー
アウトプット
リンク
SignalR トリガー
入力
アウトプット
テーブル ストレージ 入力
アウトプット
タイマー トリガー リンク
Twilio アウトプット リンク

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

サービス 例示 サンプル
ブロブストレージ トリガー
入力
アウトプット
リンク
Azure Cosmos DB (アジュール コスモス データベース) トリガー
入力
アウトプット
リンク
アジュール データ エクスプローラー (Azure Data Explorer) 入力
アウトプット
Azure SQL トリガー
入力
アウトプット
リンク
イベントグリッド トリガー
アウトプット
リンク
イベント ハブ トリガー
アウトプット
IoT ハブ トリガー
アウトプット
HTTP トリガー リンク
キュー記憶域 トリガー
アウトプット
リンク
RabbitMQ(メッセージブローカーソフトウェア) トリガー
アウトプット
SendGrid アウトプット
サービスバス トリガー
アウトプット
リンク
SignalR トリガー
入力
アウトプット
テーブル ストレージ 入力
アウトプット
タイマー トリガー リンク
Twilio アウトプット リンク

Visual Studio Code

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

Azure Portal

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

次のステップ