本記事はソラコムが提供する「SORACOM公式ブログ」に掲載された「SORACOM Harvest Filesにアップロードされた大量のファイルをまとめてダウンロードする方法」を再編集したものです。
はじめまして、こんにちは。ソリューションアーキテクトの桶谷(ニックネーム: takuya)です。
今回はSORACOM Harvest FilesにSORACOM APIを用いてアクセスして大量のファイルをダウンロードする方法をご紹介します。
SORACOM Harvest Files とは
SORACOM Harvest FilesはIoTデバイスからのデータを収集、可視化およびファイルを保存するSORACOM Harvestの機能のひとつです。Harvest Filesは主に画像やログなどのファイルを扱います。例えばIoTデバイスに接続されたカメラの画像やログファイルなどIoTデバイスで収集した「ファイル」をSORACOMに保存できます。またアップロードするファイルパスにIMSIやタイムスタンプといったメタ情報を自動的に付与することができます。
概要や用途、SORACOM Lagoonとの連携
SORACOM Harvest Files(以下、Harvest Files)は2019年7月2日よりサービスを開始しており、多くのお客さまにご利用いただいています。
用途としては先に挙げたIoTデバイスからファイルをアップロードする先として利用する他にも、IoTデバイスのファームウェアをHarvest Filesに配置しておき、IoTデバイス側からダウンロードして適用するという使い方があります。
また Harvest Filesにアップロードされたカメラ画像のファイルをSORACOM Lagoonのダッシュボードに表示し、時系列に収集したセンサーデータの値と合わせて最新のカメラ画像を表示することで、視覚的に理解しやすいダッシュボードを作成されているお客さまもいらっしゃいます。
さらなる活用を考えた時に困ること
SORACOM Harvest Filesに蓄積されたデータは、貴重な現場のデータです。例えば長期間のデータを分析することで予知保全に活かしたり、カメラの画像を機械学習で分析して物体抽出や製造業の合否判定に活用できる可能性があります。大規模なデータの分析や機械学習を行ないたい場合、Harvest Files内に格納された大量のデータを利用したくなります。また、SORACOM Harvest Filesにアップロードしたファイルの保存期間は作成日から2年間となっており、期限が来る前のファイルを一括でダウンロードしたいケースもあります(ファイル毎の有効期限の確認方法はこちらのブログをご覧ください)。
ここで少し困りごとが出てきます。Harvest Filesはファイルをひとつずつダウンロードする事は簡単なのですが、ダウンロード対象数が増えてくると、ウェブブラウザーでは手間がかかるという事です。
SORACOM APIによる解決策
今回のような大量のファイルを対象とするといった、ウェブブラウザーでは手間のかかる作業でもSORACOM APIを用いることで簡単に確実に処理を行なうことができます。今回はSORACOM Harvest Filesから大量のファイルをまとめて取り出すサンプルスクリプトを作成してみたので、それをもとに説明していきたいと思います。
利用しているAPI
・FileEntry:listFiles
・FileEntry:getFile
上記の2つのAPIを利用しています。FileEntry:listFilesは保存されているファイルの一覧を取得する API、FileEntry:getFileはファイルを取得するAPIです。
サンプルスクリプトの中身
引数で渡された認証キーIDと認証キーシークレットを用いてファイルを取得するフォルダからファイルの一覧を取得し、1ファイルずつダウンロードを繰り返す、という形になっています。
def main(args):
--- 中略 ---
token = auth(auth_key_id, auth_key)
file_names = list_file(
base_path, search, limit_num_to_list, limit_num_to_list_per_req, last_evaluated_key, token
)
get_and_save_images(file_names, base_path, save_path, limit_size_to_files, delete, token)
シンプルに複数ファイルをダウンロードするだけであれば簡単なのですが、今回はよくありそうな要件をオプションで指定できるようにしてみましたので、いくつかご紹介します。
--limit_size_to_files
SORACOM Harvest Filesからファイルをダウンロードする際、ダウンロードしたファイルのサイズに応じてファイルエクスポート料金が発生します。全てのファイルを一括でダウンロードしてしまうと当月の料金が大きく増加してしまいます。料金を抑えるために複数回/月に分けてダウンロードする際に、合計ダウンロードサイズで処理を制限できるオプションです。
--last_evaluated_key
FileEntry:listFilesで取得するファイルの一覧はファイル名順で取得されます(Harvest Filesにファイル名順に格納されています)。ファイル名を指定することで、その次のファイル以降がダウンロード対象となります。複数回に分けてダウンロードを行なう際、前回の最後にダウンロードしたファイル名を指定することで、続きからダウンロードを再開することができるオプションです。
その他のオプション、使い方や詳細についてはREADME.mdをご一読ください。
まとめ
いかがでしたでしょうか。
SORACOM APIを利用することで、人の手では時間やコストがかかる作業を簡単に実現できました。またスクリプトから実行することで、人が操作する場合と比較してミスが混入する可能性を下げることもできます。
今回は SORACOM Harvest Filesにアップロードされた大量のファイルをまとめて取り出すというお題でしたが、SORACOMの各サービスはAPIで操作することができますので、色々なケースにおいて SORACOM APIを利用することで作業を改善できるかと思います。
APIの詳細は、APIリファレンスに掲載されており、仕様を確認できるだけではなく、実際にAPIをインタラクティブに呼び出してみることができます。また特別なお申し込みも不要で、すぐに始めることが可能となっています。
「こんな事できないかな」「これはどの API を使えばいいのだろう」といった疑問がありましたらTwitterのハッシュタグ#soracomでツイートしたり、SORACOMサポートまでお問い合わせください。
今後もSORACOM APIを使った便利な使い方をご紹介していきますので、ご期待ください!
この連載の記事
-
第502回
デジタル
IoTがトラック輸送業界をどのように変えているのか -
第501回
デジタル
簡単に構築、カメラ+SORACOM Flux+生成AIによる映像監視システムの解説 -
第500回
デジタル
位置情報トラッキングシステムのIoTレシピを公開、日経CNBC「トップに聞く」出演動画公開、他 ほぼ週刊ソラコム 01/04-01/24 -
第499回
デジタル
3Gのサービス終了に向けたIoTデバイスの準備方法 -
第498回
デジタル
【保存版】 ここから始める IoT 、基礎から学べる入門向けコンテンツガイド -
第497回
デジタル
総勢31名の執筆陣!SORACOM アドベントカレンダー 2024とソラコムサンタの振り返り -
第496回
デジタル
SORACOM Flux の Webhook アクションが認証ヘッダーに対応、AWS Signature V4 も使用可能に。より広がる IoT アプリの自動化へ! -
第495回
デジタル
2025/1/29(水) オンラインセミナー「まだ間に合う!3G停波後のIoT通信」を無料開催! -
第494回
デジタル
SORACOM Flux グランプリ開催!セールスメンバーの挑戦と成果 -
第493回
デジタル
【後編】生成 AI を “さらに” 使いこなす、5つの考え方とユースケース