Share via


Azure Functions 用の Azure Cache for Redis 入力バインド (プレビュー)

関数が実行されると、Azure Cache for Redis 入力バインドはキャッシュからデータを取得し、それを入力パラメーターとして関数に渡します。

セットアップと構成の詳細については、概要に関するページをご覧ください。

重要

Functions の Node.js v4 モデルは、Azure Cache for Redis 拡張機能ではまだサポートされていません。 v4 モデルの動作の詳細については、Azure Functions Node.js 開発者ガイドを参照してください。 v3 と v4 の違いの詳細については、移行ガイドを参照してください。

重要

Functions 用 Python v2 モデルは、Azure Cache for Redis 拡張機能ではまだサポートされていません。 v2 モデルの動作の詳細については、Azure Functions Node.js 開発者ガイドを参照してください。

A C# 関数は、次の C# モードのいずれかを使用して作成できます。

  • 分離されたワーカー モデル: ランタイムから分離されたワーカー プロセスで実行されるコンパイル済みの C# 関数。 分離ワーカー プロセスは、LTS および 非 LTS バージョンの .NET および .NET Framework で実行されている C# 関数をサポートするために必要です。 分離ワーカー プロセス関数の拡張機能では、Microsoft.Azure.Functions.Worker.Extensions.* 名前空間が使用されます。
  • インプロセス モデル: Functions ランタイムと同じプロセスで実行されるコンパイル済みの C# 関数。 このモデルの一部では、主に C# ポータルの編集のためにサポートされている C# スクリプトを使用して Functions を実行できます。 インプロセス関数の拡張機能では、Microsoft.Azure.WebJobs.Extensions.* 名前空間が使用されます。

重要

.NET 関数の場合は、インプロセス モデルよりも分離ワーカー モデルを使用することをお勧めします。 インプロセス ワーカー モデルと分離ワーカー モデルの比較については、Azure Functions 上の .NET の分離ワーカー モデルとインプロセス モデルの違いを参照してください。

次のコードでは、pub/sub トリガーのキーを使用して、コマンドを使用して入力バインドから値を取得してログに GET 記録します。

using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisInputBinding
{
    public class SetGetter
    {
        private readonly ILogger<SetGetter> logger;

        public SetGetter(ILogger<SetGetter> logger)
        {
            this.logger = logger;
        }

        [Function(nameof(SetGetter))]
        public void Run(
            [RedisPubSubTrigger(Common.connectionStringSetting, "__keyevent@0__:set")] string key,
            [RedisInput(Common.connectionStringSetting, "GET {Message}")] string value)
        {
            logger.LogInformation($"Key '{key}' was set to value '{value}'");
        }
    }
}

Azure Cache for Redis 入力バインドのその他のサンプルは、GitHub リポジトリ入手できます。

次のコードでは、pub/sub トリガーのキーを使用して、コマンドを使用して入力バインドから値を取得してログに GET 記録します。

package com.function.RedisInputBinding;

import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;

public class SetGetter {
    @FunctionName("SetGetter")
    public void run(
            @RedisPubSubTrigger(
                name = "key",
                connection = "redisConnectionString",
                channel = "__keyevent@0__:set")
                String key,
            @RedisInput(
                name = "value",
                connection = "redisConnectionString",
                command = "GET {Message}")
                String value,
            final ExecutionContext context) {
            context.getLogger().info("Key '" + key + "' was set to value '" + value + "'");
    }
}

このfunction.jsonでは、パブリッシュ/サブ トリガーと、Azure Cache for Redis インスタンス上の GET メッセージへの入力バインドの両方を定義します。

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ],
    "scriptFile": "index.js"
}

この JavaScript コード (index.js から) は、pub/sub トリガーによって提供されるキーに関連するキャッシュされた値を再トリガーしてログに記録します。


module.exports = async function (context, key, value) {
    context.log("Key '" + key + "' was set to value '" + value + "'");
}

このfunction.jsonでは、パブリッシュ/サブ トリガーと、Azure Cache for Redis インスタンス上の GET メッセージへの入力バインドの両方を定義します。

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ],
    "scriptFile": "run.ps1"
}

この PowerShell コード (run.ps1 から) は、pub/sub トリガーによって提供されるキーに関連するキャッシュされた値を取得してログに記録します。

param($key, $value, $TriggerMetadata)
Write-Host "Key '$key' was set to value '$value'"

次の例では、Azure Cache for Redis インスタンス上の GET メッセージへの入力バインドを含む pub/sub トリガーを使用します。 この例は、v1 と v2 のどちらの Python プログラミング モデルを使用するかによって異なります。

このfunction.jsonでは、パブリッシュ/サブ トリガーと、Azure Cache for Redis インスタンス上の GET メッセージへの入力バインドの両方を定義します。

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ]
}

この Python コード (__init__.py から) は、pub/sub トリガーによって提供されるキーに関連するキャッシュされた値を再取得してログに記録します。


import logging

def main(key: str, value: str):
    logging.info("Key '" + key + "' was set to value '" + value + "'")

これらのプロパティについては、「構成」セクションを参照してください。

属性

Note

このバインドでは、すべてのコマンドがサポートされているわけではありません。 現時点では、1 つの出力を返す読み取りコマンドのみがサポートされています。 完全な一覧 はこちらをご覧ください

属性のプロパティ 説明
Connection キャッシュ 接続文字列を含むアプリケーション設定名前。次に例を示します。<cacheName>.redis.cache.windows.net:6380,password...
Command 次のようなGET keyHGET key fieldスペースで区切られたすべての引数を使用してキャッシュ上で実行される redis-cli コマンド。

注釈

注釈では RedisInput 、次のプロパティがサポートされています。

プロパティ 説明
name 特定の入力バインドの名前。
connection キャッシュ 接続文字列を含むアプリケーション設定名前。次に例を示します。<cacheName>.redis.cache.windows.net:6380,password...
command 次のような GET keyHGET key fieldスペースで区切られたすべての引数を使用してキャッシュで実行される redis-cli コマンド。

構成

次の表は、function.json ファイルで設定したバインド構成のプロパティを説明しています。

function.json のプロパティ 説明
connection キャッシュ 接続文字列を含むアプリケーション設定名前。次に例を示します。<cacheName>.redis.cache.windows.net:6380,password...
command 次のようなGET keyHGET key fieldスペースで区切られたすべての引数を使用してキャッシュ上で実行される redis-cli コマンド。

Note

Python v2 と Node.js v4 for Functions では、関数の定義にfunction.jsonは使用されません。 これらの新しい言語バージョンはいずれも、現在、Azure Redis Cache バインドではサポートされていません。

完全な例については、セクションの例を参照してください。

使用方法

入力バインディングは、キャッシュから文字列を受け取る必要があります。

バインディング パラメーターとしてカスタム型を使用すると、拡張機能は JSON 形式の文字列をこのパラメーターのカスタム型に逆シリアル化しようとします。