LoginSignup
3
1

More than 5 years have passed since last update.

オープンロジ(openlogi)APIの入庫/出庫実績をS3にPUT

Last updated at Posted at 2018-07-20

オープンロジとは

日々の物流業務をもっと効率的に。物流アウトソーシングサービス 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への変換も行います。

設計

  1. OPENLOGI APIで入庫/出庫実績をGET
  2. JSONをTSVに変換
  3. 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
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1