僕は技術ができない

技術のできないスーツ園児ニアが考えていること

Azure DataFactory でトリガーがモニターに出てこなくて困る

はじめに

みなさんAzure DataFactoryを使っていますか?
Azure DataFactoryを使うと、ノンコーディングでデータパイプラインを作ることができます。便利!

docs.microsoft.com

Storage BlobにデータがアップロードされたらそいつをCosmosDBに書き込むパイプラインを作りたいのですが、Azure Functionsだとリトライ処理書かなきゃいけないし結構しんどいです(そして技術力のない僕にそんな制御できない)。
Azure DataFactoryを使えばそこらへんをまるっとよしなにやってくれそうなのでやりましたが、モニタリング周りで詰まってしまったのでメモとして残しておきます。
解決策があるわけではないのでご了承。

<2019/07/16追記>
一時的な不具合だったのか、モニターに表示されるようになりました! ただし、自動で画面が更新されるわけではないので、自分で「Refresh」をクリックする必要があります。
また、デバッグ実行ではモニターには反映されません。

本題

Triggerを以下のように設定しました。 ただただコンテナー「input」にBlob(csv)がアップロードされたらトリガーされるだけのシンプルなものです。

{
    "name": "blobInputTrigger",
    "properties": {
        "annotations": [],
        "runtimeState": "Started",
        "pipelines": [
            {
                "pipelineReference": {
                    "referenceName": "SimplePipelineStorageToCosmos",
                    "type": "PipelineReference"
                }
            }
        ],
        "type": "BlobEventsTrigger",
        "typeProperties": {
            "blobPathBeginsWith": "/input/blobs/",
            "blobPathEndsWith": ".csv",
            "scope": "/subscriptions/<サブスクリプションID>/resourceGroups/<リソースグループ名>/providers/Microsoft.Storage/storageAccounts/<ストレージアカウント名>",
            "events": [
                "Microsoft.Storage.BlobCreated"
            ]
        }
    }
}

いざBlobアップロード!! f:id:contemporarycuz:20190629182112p:plain

DataFactoryのトリガーモニターを見てみるが何も表示されない。。。

f:id:contemporarycuz:20190629182202p:plain
フィルターもたぶん合ってる

Cosmosにはデータ入ってました。

f:id:contemporarycuz:20190629182333p:plain

モニターできんと困るやんけ!
ということで僕自身のIssue上げでした。

後はCosmosからのデータ一括削除もなんとかしてノンコーディングでやりたい(Logic Appsとかでリトライ処理よしなにやってくれないかしら)。

その他の話題

最初はモニターにトリガーの実行履歴が出てこなかったので「動いてないのか!?」と思い、いろいろと調べたところ少しかしこくなったのでメモ。

blog.engineer-memo.com

  • Storage は V2 にしないといけない
  • トリガーの「Blob path begins with」と「Blob path ends with」はどっちかを利用し、両方利用しない(両方利用してもいいけど要検証)
  • 自分でトリガーjson書くときは、コンテナー名の後に/blobs/をつけること
"blobPathBeginsWith": "/input/blobs/",

どうやらここらへんはEventGridの仕様であるようなのですが、DataFactory作成後、特にEventGridのリソースが見えるわけではありませんでした(ポータルから確認したけど特にリソースは作られていなかった)。マネージド・サービスなので裏で勝手にやってくれていると理解。