Soracom

Users

ドキュメント

デバイスのファイルを Harvest Files に送信する

このページでは、Harvest Files を使ってデバイスのファイルを SORACOM プラットフォームに保存し、そのファイルを SORACOM ユーザーコンソールで確認する手順を紹介します。

操作を始める前に準備が必要です (クリックして確認してください)

(1) SORACOM Air for セルラーの IoT SIM、および IoT SIM を利用できるデバイスを準備する

各種デバイスでの IoT SIM の使用方法については 各種デバイスで SORACOM Air を使用する を参照してください。

準備完了

ステップ 1: Harvest Files を有効化する

デバイスのファイルを Harvest Files に保存する場合は、デバイスに取り付けた IoT SIM が所属するグループで Harvest Files を有効化します。詳しくは、Harvest Files を有効化する を参照してください。

ステップ 2: デバイスからファイルを Harvest Files に送信する

Harvest Files にアップロードが完了したファイルのサイズによって料金が発生します。詳しくは 料金プラン を確認してください。

同一のファイル名に送信した場合はファイルは上書きされます

たとえば、[デフォルトパス] を指定した場合、ファイル名を指定せずに送信したときはファイルは上書きされます。なお、[デフォルトパス] にプレースホルダー (:imsi または :time) を指定すると、IMSI やファイルを送信した UNIX 時間 (ミリ秒) がファイル名に含まれるため、上書きされにくくなることが期待できます。[デフォルトパス] については、Harvest Files を有効化する を参照してください。

デバイスから HTTP で送信する

Harvest Files の HTTP (セルラー通信経由のアップロード) のエントリポイント に、IoT SIM を利用するデバイスから HTTP POST もしくは PUT リクエストを送信します。

保存パス (/logs/abc.png) を指定する例:

送信したファイル「a.png」は、/logs/abc.png に保存されます。送信するファイルの名前やパスは適宜読み替えてください。

$ curl -v -X PUT http://harvest-files.soracom.io/logs/abc.png \
-H "Content-type: image/png" \
--data-binary @a.png
import requests

header = {"Content-Type": "image/png"}
with open("/path/to/a.png", "rb") as image:
  response = requests.post("http://harvest-files.soracom.io/logs/abc.png", headers=header, data=image)
  print(response.status_code)
  print(response.text)
[デフォルトパス] を設定すると保存パスを省略できます

グループ設定で [デフォルトパス] を設定している場合は、以下のように保存パスを省略してもファイルを送信できます。送信したファイル「a.png」は、グループ設定で指定した [デフォルトパス] のパス、ファイル名に保存されます。

$ curl -v -X PUT http://harvest-files.soracom.io/ \
-H "content-type:image/png" \
--data-binary @a.png

ただし、[デフォルトパス] が空欄または / に設定された状態で、以下のコマンドを実行すると、エラーメッセージが表示されます。[デフォルトパス] にファイル名まで入力してください。

エラーが表示される例:

$ curl -X PUT http://harvest-files.soracom.io \
-H "content-type:text/plain" \
--data-binary @a.txt
{"message":"Invalid path. request path: /, configured path "}

デバイスで SORACOM API を呼び出して送信する

SORACOM API でも、Harvest Files にファイルをアップロードできます。

保存パス (/sample/test.sh) を指定する例:

送信したファイル「test.sh」は、/sample/test.sh に保存されます。

${X_SORACOM_API_KEY} や ${X_SORACOM_TOKEN} の取得方法は、SORACOM API 利用ガイド を参照してください。

$ curl -X PUT "https://api.soracom.io/v1/files/private/sample/test.sh" \
-H "X-Soracom-API-Key: ${X_SORACOM_API_KEY}" \
-H "X-Soracom-Token: ${X_SORACOM_TOKEN}" \
-H "Content-Type: text/x-sh" \
--data-binary @test.sh 
SAM ユーザーに割り当てる権限に注意してください

たとえば、ファイルのアップロード (FileEntry:putFile API) やファイル削除 (FileEntry:deleteFile API) を制限できます。詳しくは、アクセス管理 (SORACOM Access Management: SAM) を参照してください。

[デフォルトパス] は反映されません

SORACOM API でアップロードする際は、グループ設定の [デフォルトパス] は反映されません。

ステップ 3: Harvest Files に収集されたファイルを確認する

SORACOM ユーザーコンソールでは、Harvest Files で保存されたファイルを確認およびダウンロードできます。

SORACOM ユーザーコンソールのメニューから「SORACOM Harvest Files」を選択します。

保存されたファイルは当メニューから確認およびダウンロードできます。

デバイスで以下のコマンドを実行しても、ファイルを確認できます。

$ curl -v -X GET http://harvest-files.soracom.io

ステップ 4: デバイスで Harvest Files のファイルをダウンロードする

デバイス側からは以下の例のようにファイルのダウンロードが可能です。

curl -O http://harvest-files.soracom.io/sample/test.sh

また、以下の例のようにファイルのメタ情報を確認できます。ETag (エンティティタグ) もあるため、定期的に監視して変更があった時のみにダウンロードするという応用も考えられます。

(例)

$ curl -I http://harvest-files.soracom.io/sample.txt
HTTP/1.1 200 OK
Date: Tue, 13 Aug 2019 08:26:47 GMT
Content-Type: plain/text
Content-Length: 0
Connection: close
ETag: aa79f62afe95f7f550dff6e544bbb69e