Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。

Azure Blob Storageにダウンロードツールでファイルアップロードしようとしたらハマった件

gawa
15 - Aurora
15 - Aurora

Azure Data Lake Storage Gen2にcsvをアップロードするWFを作ったときに丸二日ハマったので、こちらで共有します。

 

事象

Microsoftの公式ドキュメントに従ってURIおよびヘッダを作成してダウンロードツールを使ったが、”必須のヘッダーがついてません”というエラーが出た。具体的になんのヘッダが足りてないかが、応答結果に書いておらず、ハマってしまった。

 

解決方法

ヘッダに”Transfer-Encoding”を追加。値は空欄にする。どうやらAlteryxでサイレントでTransfer-Encodingヘッダを追加して値をchunkedに設定しているらしく、それが原因とのこと。なので、値を空欄で上書きする。

以下の記事を参考。

https://community.alteryx.com/t5/Alteryx-Designer-Discussions/Azure-Blob-Storage-REST-API-Alteryx-si...

 

その他参考情報

私の環境では共有アカウントキーを使いました。URIと明示的に指定したヘッダは以下

URI: https://{storagename}.blob.core.windows.net/{containername}/{filename}{SAS Query}

Header:

  x-ms-blob-type:   BlockBlob

  Content-Type:   application/octet-stream

  Transfer-Encoding:   空欄にする

  Content-Length:  ファイルサイズ(byte)

 

※Content-Lengthヘッダでファイルサイズ指定が必須で、これも地味に面倒だった。Blobフィールドのファイルサイズをフィールドサマリーツール等で取得しようとしたが、できず。結局、以下のようにした。

csvファイルをブロブ変換ツールで16進数(HEX)に変換➡フォーミュラツールで16進数データのLengthを計算し2で割る(Byte相当長さになる)➡この値をContent-Lengthヘッダの値に設定

 

3件の返信3
AkimasaKajitani
17 - Castor
17 - Castor

AWS以外のオブジェクトストレージについてはサポートがいまいちですよね・・・。

いっそのことCDATAのコネクトとか使った方が楽なのでしょうか・・・・

 

※私もGCPのGoogle Cloud Storageにダウンロードツールで接続しましたが、結構面倒でした・・・。Pythonツールが一番楽・・・。

 

gawa
15 - Aurora
15 - Aurora

コネクタの種類充実してほしいというのも、来週のユーザ会での直訴ポイントですかね・・・?笑

Pythonでもダウンロードツールの代わりになるとは知らなかったので、試してみようと思います(Pythonツールはカーネル起動が遅いので、どうしても必要な時以外は使わないです。。。)

AkimasaKajitani
17 - Castor
17 - Castor

Pythonツールは普通にRestAPI叩けますので、、、また、Pythonだと普通にAPI叩くよりもライブラリ提供されている事が多くて、それ使うと遥かに楽にできますね・・・。

ただ、おっしゃるとおり、起動が遅いので最終手段にしたいところです・・・。

 

日本のツールのコネクタはしょうがないにしても、グローバルで使われそうなところはしっかり欲しいですよね・・・。