Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

Azure Functions でキューをきっかけに処理を走らせよう

$
0
0

Queue をきっかけに動く処理

Azure Functions は、いろんなものをトリガーにして動かすことが出来ます。 トリガーのリストについては、以下のドキュメントに記載があります。

Azure Functions でのトリガーとバインドの概念

とりあえず、上記ページにあるようなキューにメッセージが追加されたらテーブルに出力するものを VSCode + node.js の環境で作ってみようと思います。

作業するにあたって、Queue Storageテーブル ストレージのリファレンスページを開いてみておくとスムーズかもしれません。

関数を作成

では、node.js用の関数を作るために func new をターミナルで打ち込みます。言語は JavaScript で QueueTrigger を選択して Queue2Table という名前で作成してみました。

これで、入力が Queue Storage に関数が作られるので、これをベースに進めていきます。

とりあえず適当にこんな感じに function.json を編集してみました。

{"disabled": false,
  "bindings": [{"name": "input",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myqueue-items",
      "connection": "StorageConnection"},
    {"name": "output",
      "type": "table",
      "direction": "out",
      "connection": "StorageConnection",
      "tableName": "QueueMessage"}]}

connection に設定している StorageConnection は local.settings.json に以下のように設定しておきます。

{"IsEncrypted": false,
  "Values": {"AzureWebJobsStorage": "Functionが使うストレージの接続文字列",
    "AzureWebJobsDashboard": "Functionが使うストレージの接続文字列",
    "FUNCTIONS_EXTENSION_VERSION": "~1",
    "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "Functionが使うストレージの接続文字列",
    "WEBSITE_CONTENTSHARE": "なんか入ってるはず",
    "WEBSITE_NODE_DEFAULT_VERSION": "6.5.0"},
  "ConnectionStrings": {"StorageConnection": "ここにストレージの接続文字列"}}

あとは、index.js を書くだけです。とりあえず入力をそのまま出すようにしてみました。

module.exports = function (context) {
    context.bindings.output = {
        PartitionKey: "Queue",
        RowKey: Date.now().toString(),
        Value: context.bindings.input
    };
    context.done();
};

できたので以下のコマンドでテストしてみます。

func run -c 'Hello world'

こんな出力が出ました。

PS C:\Users\kaota\Documents\Visual Studio Code\Projects\funcedu> func run Que
ue2Table -c 'Hello world'

We need to launch a server that will host and run your functions.
The server will auto load any changes you make to the function.
Do you want to always display this warning before launching a new server [yes
/no]? [yes]
Response Status Code: Accepted

Storage Explorer を使ってテーブルを見てみるとデータが入っていました。OK。配備してみましょう。

func azure functionapp publish OkazukiNodeJSEdu

ストレージへの接続文字列を追加します。 ポータルで作成した Function App の名前を選んで(今回の場合は OkazukiNodeJSEdu)概要タブの構成済みの機能にあるアプリケーション設定を選びます。

見慣れた App Service のアプリケーション設定の画面が出てくるので、ここの接続文字列に StorageConnection という名前で適当な本番用ストレージへの接続文字列をカスタムで作ります。

Storage Explorer とか適当なツールを使って myqueue-items キューに適当な値を突っ込みます。そうすると、テーブルストレージに行が追加されるはずです。

割と簡単でしたね。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>