10bace LOG

ターニングポイントさん!?

10bace LOG

タグ: C#

CloudBlockBlobでStream読もうとしてThe specified resource does not existした話

◆事象

AzureのBlobTriggerでDurable Functions動かしたくなる話

上の記事を書くにあたり、Durable Functionsの調査をしていた。んで、BlobStreamシリアライズできねぇからコンテキストで受け渡せねぇってんで、シリアライザブルなオブジェクトであるUriをバケツリレーしてActivity Functionの中でコンストラクトしようって話になった。(呪文)

そうしたところ

The specified resource does not exist.

とか言われた。

なんで?(殺意)

続きを読む

AzureのBlobTriggerでDurable Functions動かしたくなる話

デュラブってる?(激寒)

◆前史(飛ばしてよし)

AzureでFunctionを実行したい時に使えるのがAzure Functionsです。
FunctionっていうのはつまりC#だので書くサーバー処理の話だ。多分。そのFunctionはバッチ処理をしたりとかファイルを生成したりメールを送ったりとかする(小学生並みの説明)
Functionのなにが凄いかっていうと、普段は寝てるのに処理を走らせたいときだけ起きてくれる。つまり、インスタンスをずっと起こしておく必要がなくなるわけで、正しく使えばお金の節約ができる。(App Serviceの上にFunctionを配置することで、不眠なFunctionを作ることもできるよ。App Serviceの負荷が小さい時間帯にリソースを有効活用できたりするし、10分の処理時間制限が撤廃されたりするよ。)

Functionは何らかのきっかけをトリガして動く。トリガできるイベントは

  • Blobと呼ばれるAzureのストレージにファイルが配置された
  • HTTPリクエスト
  • Queueストレージにメッセージが配置された
  • あらかじめ設定された時間が来た

とかだ。さまざまだ。

でね?例えば

「Blobに配置されたCSVを加工してSQL DatabaseにINSERT」
した後に
「そのデータを元に集計バッチ処理を走らせる」

ってことをしたくなるのが男のサガじゃないですか。
しかし、それをFunction一本糞にしてしまうのはおかしい。単一責任の原則とかでね。それゆえ、Functionは2つになる。

続きを読む

Powered by WordPress & Theme by Anders Norén