本記事はソラコムが提供する「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を使った便利な使い方をご紹介していきますので、ご期待ください!
本記事はアフィリエイトプログラムによる収益を得ている場合があります
この連載の記事
-
第644回
デジタル
【SORACOM Napter】SIM グループ単位でリモートアクセスの作業者を分ける方法 -
第643回
デジタル
クラウド型カメラ×生成AIの可能性がもっと広がる!ソラカメ&SORACOM Fluxの新たな活用方法のご紹介 -
第642回
デジタル
RTK補正情報サービスの単体提供を開始しました! -
第641回
デジタル
IoT SIMの譲渡機能を活用するために知っておきたい通信への影響 -
第640回
デジタル
SORACOM Air RTC GatewayとAsteriskで音声AIエージェント開発 -
第639回
デジタル
I wanna IoT罠 version2! 狩猟罠の遠隔操作デバイス第2弾を Discovery 2026 プロトタイピングコーナーで展示しました! -
第638回
デジタル
SORACOM Knowledge MCP Server公式掲載、後付けIoTデバイス4製品を最大25%オフ 期間限定キャンペーン、他 ほぼ週刊ソラコム 08/15-09/04 -
第637回
デジタル
Connectivity Hypervisor 向け検索機能の舞台裏 ― サマーインターンで経験した設計と実装 -
第636回
デジタル
AI で作った Android スマホアプリで手軽に RTK 位置測位の PoC をスタートしよう! -
第635回
デジタル
契約回線数1,000万件突破、IoT SIMのステータスを問わず譲渡申請が可能に、他 ほぼ週刊ソラコム 07/25-08/14

