オープンロジとは
日々の物流業務をもっと効率的に。物流アウトソーシングサービス OPENLOGI
月間出荷件数が数件〜数千件まで
固定費ゼロ・従量課金で利用できる物流アウトソーシングサービス
OPENLOGI API
https://api.openlogi.com/doc/api.html
最新は1.4.
Amazon MWS と比べると、 RESTful, JSON とモダンな仕様ですが、APIの種類は少ない。
目的
最終的にAd-hocに分析するにしろ、DB/DWHに投入してBIするにしろ、
S3に保存することでAWSの豊富なサービスとツールの恩恵を受けられるので便利です。
例えばad-hocな分析をしたければ、新しいEC2インスタンス上に簡単かつ高速にコピーできるし、SDKは複数の言語またはプラットフォームに対応しているし、Athenaを使ってしまってもよい。
S3を制する者はAWSを制す
また、OPENLOGI APIのレスポンスJSONのままでは大量データの高速処理に向かないため、TSVへの変換も行います。
設計
- OPENLOGI APIで入庫/出庫実績をGET
- JSONをTSVに変換
- S3にPUT
準備
用意するもの
curl
jq
-
awscli
(aws configure済み) - S3バケット
まずは登録する(無料)
https://www.openlogi.com/
メールアドレス認証に続いて、アカウント情報を入力。
APIの利用だけなら支払い情報の登録は不要。
アクセストークン発行
https://api.openlogi.com/console/
トークン名(クライアント名)を入力するだけで発行完了
権限管理などは無い模様だが、リクエスト元の管理を行うためにアクセストークンはクライアント毎の発行が望ましい。
実行
結果的にワンライナーになってしまった
$ TOKEN=your_bearer_token
$ curl -s -H"X-Api-Version: 1.4" -H"Authorization: Bearer $TOKEN" https://api.openlogi.com/api/warehousings/stocked/YYYY/MM | jq .warehousings[] | jq '.items[]+{"stocked_at":.stocked_at}' | jq -r '[.stocked_at,.id,.name,.quantity]|@tsv' | aws s3 cp - s3://your-bucket-name/warehousings/stocked/YYYYMM
$ curl -s -H"X-Api-Version: 1.4" -H"Authorization: Bearer $TOKEN" https://api.openlogi.com/api/shipments/shipped/YYYY/MM | jq .shipments[] | jq '.items[]+{"shipped_at":.shipped_at,"company":.recipient.company}' | jq -r '[.shipped_at,.id,.name,.quantity]|@tsv' | aws s3 cp - s3://your-bucket-name/shipments/shipped/YYYYMM
確認
$ aws s3 cp s3://your-bucket-name/shipments/shipped/YYYY/MM/DD
YYYY-MM-DDThh:mm:ss+09:00 AA001-I000001 ほげ 1
YYYY-MM-DDThh:mm:ss+09:00 AA001-I000002 ふが 1