ブログ

κυσο βλογ

M2X無料アカウントが停止するのでデータをエクスポートする

M2X無料アカウント停止

メールを見逃していたが、日本時間で2020/04/16 02:00 にM2Xの無料アカウントが停止される。2020/02/15にそのメールが着ていたが、件名からはそのような重大なメールであることがわからず読んでいなかった。

データエクスポート

  1. データエクスポートコマンド発行→ジョブID発行
  2. ジョブIDでジョブ状態を確認
  3. ジョブ終了でデータエクスポート用URLが表示されるのでwebブラウザなどでダウンロード

という流れになる。

適当なLinuxホストにログインして(今回はWSLを利用)データエクスポートコマンドをcurlで実行する。devices/以降はデバイスID、X-M2X-KEY:にはデバイスAPIキーを指定する。

curl -i "https://api-m2x.att.com/v2/devices/<DEVICE-ID>/values/export.csv" -H "X-M2X-KEY: <DEVICE-API-KEY>"

次のような応答でエクスポートジョブが受理されたことがわかる。

HTTP/1.1 202 Accepted
Content-Type: application/json; charset=UTF-8
Location: https://api-m2x.att.com/v2/jobs/<JOB-ID>
X-M2X-VERSION: v2.112.2
Vary: Accept-Encoding
X-RateLimit-Limit: 25
X-RateLimit-Remaining: 24
X-RateLimit-Reset: 1586865919
Content-Length: 21

{"status":"accepted"}

最後のacceptedで受理がわかり、ジョブ確認用のURLがLocation:の次に表示されている。

エクスポートジョブの状態を以下のコマンドで確認する。ここで指定するjobs/以降のIDは上のジョブ確認用のIDで、X-M2X-KEY:にはデバイスキーではなくマスターAPIキーを指定する。マスターAPIキーはアカウント設定からMaster Keyで確認できる。

curl -i "https://api-m2x.att.com/v2/jobs/<JOB-ID>" -H "X-M2X-KEY: <MASTER-API-KEY>"
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
X-M2X-VERSION: v2.112.2
Vary: Accept-Encoding
X-RateLimit-Limit: 25
X-RateLimit-Remaining: 24
X-RateLimit-Reset: 1586866332
Content-Length: 220

{"id":"<job-id>","state":"working","output":null,"errors":null,"started":"2020-04-14T12:05:18.160Z","finished":null,"created":"2020-04-14T12:05:17.996Z","updated":"2020-04-14T12:05:18.160Z"}

まだstateはworkingなのでエクスポートジョブが実行中である。データサイズにもよるが、数分後にもう一度ジョブ確認のコマンドを発行すると、今度は以下のような応答が得られる。

{"id":"<job-id>","state":"complete","output":null,"errors":null,"started":"2020-04-14T12:05:18.160Z","finished":"2020-04-14T12:23:13.818Z","created":"2020-04-14T12:05:17.996Z","updated":"2020-04-14T12:23:13.819Z","result":{"url":"http://export.m2x.sl.attcompute.com/<DEVICE-ID>%20-%20<DEVICE-NAME>%20-%202020-04-14T12:22:53.270Z.csv"}}

url:以降に、csvフォーマットのファイルダウンロードURLが書かれているので、これをコピーしてwebブラウザなどでダウンロードする。もちろんcurlでダウンロードしても良いが、webブラウザのほうが進捗がわかりやすい。

M2Xからの移行先は

どこがいいだろうか?