2015年2月26日 dsthhub lt資料『dataspider servistaでboxに接続してみた』
TRANSCRIPT
DataSpider ServistaでBoxに接続してみた
Lightning Talk @ dstnHUB, Feb 2015
株式会社アプレッソ開発部 開発1G 陳映融
簡単な自己紹介
• 2014年1月 アプレッソに入社(あっという間に一年経った…)
• 台湾出身(寒いのは苦手…)
• 日本語でおk(でもネタ系の言葉は微妙かも…)
2
Boxについて
Boxって?
• Box – https://www.box.com/
• エンタープライズ向けのクラウドストレージ
– 個人向けのプランもある
• 海外ではかなりのシェアを占めている
– 日本ではまだ認知度が低め…
4
Boxを使用するには
• 公式サイト・アプリ
• 開発者向けのREST API
– Box Content API https://developers.box.com/docs/
• ストレージのコンテンツへのフルアクセスを提供
• 他のサービス・アプリのバックエンドとしての使用も可能
– Box View API https://developers.box.com/view/
• ドキュメントをHTML5で表示する機能を提供
• 限定されたコンテンツ管理機能もある
5
BoxのAPI認証と権限
• Content API
– OAuth 2.0による認証• クライアントID/シークレットはアプリごとで付与される
• アクセス権限はスコープの設定で制御
• View API
– API Keyによる認証• API Keyはアプリごとで付与される
• アクセス権限は該当アプリで作成したリソースのみ
6
• アプリケーション設定画面 https://app.box.com/developers/services
– 右メニューの「Boxアプリケーションの作成」を押下
APIを使用するための準備 1
7
※作成済みのアプリケーションを削除する手段がないので、作りすぎにご注意を。
– 使用するAPIを選択
APIを使用するための準備 2
8
※アプリケーションの使用するAPI
を選択後、二度と変更できないので、間違えないようにご注意ください。
View APIに接続してみる
View API
• REST API
– DataSpiderのRESTアダプタを使えば大丈夫
• API Keyによる認証
– アプリケーションを登録すれば発行してくれる• アプリケーション設定画面に表示される
– アクセス対象リソースはView API専用• View APIで作成したリソースのみアクセス可能
• BoxのWeb UIからこれらのリソースにアクセスできない
• Boxアカウント容量として計上されない
10
接続してみる 1
• シナリオ
1. 公開URLでファイルアップロード• http://dataspider.appresso.com/documents/dss_catalogue.pdf
2. ファイルをローカルにダウンロード• /tmp/catalogue.pdf
11
接続してみる 2
• シナリオ
1. ローカルファイルをアップロード• /data/view_demo2/DS本チラシ.pdf
2. オンライン表示用URL取得
3. URLをブラウザで表示
12
※表示URL取得できるようになるまで待つ
Content APIに接続してみる
Content API
• REST API
– DataSpiderのRESTアダプタを使えば大丈夫
• OAuth 2による認証
– OAuth 2の仕組みは?• 去年のLT@dstnHUBで説明したので割愛
• 詳しくはウェブで!(dstnサイトで検索)
– DataSpiderにOAuth 2認証機能はないけど?⇒スクリプトの組み合わせで実現できる!
– アクセス対象リソースはBoxのWeb UIと同じ
14
BoxのOAuth 2認証実装
• 認可コード・トークンの有効期間
– 認可コード:30秒
– リフレッシュトークン:60日、または初回使用時まで
• 認可コード要求パラメータ
– state
• 指定必須
– redirect_uri
• ローカルホストは開発フェーズでしか使用できない
• ポートとパスは制限なし
15
• 認可コード待ち受け
OAuth 2認証スクリプト
16
一時ファイルとして保存
OAuth 2認証スクリプト
• アクセストークン準備
17
認可コード一時ファイルによる連携
OAuth 2認証スクリプト
18
トークンなし:初回認証リフレッシュトークン期限切れ:再認証
OAuth 2認証スクリプト
19
アクセストークン期限切れ:アクセストークン再発行
OAuth 2認証スクリプト
20
トークン有効期間内:保存済みのトークンを使用
• シナリオ
1. フォルダを作成• [Box] /Uploaded, /Downloaded
2. ローカルファイルをアップロード• [ローカル] /data/content_demo1/* [Box] /Uploaded
接続してみる 1
21
• シナリオ
1. 検索(オンライン)でヒットした対象をダウンロード• [Box] name=dss_* [ローカル] /tmp/*
2. ダウンロード済みのファイルを特定フォルダに移動• [Box] /Downloaded
接続してみる 2
22
• シナリオ
1. 検索(キャッシュ)でヒットした対象をダウンロード• [Box] name=dss_* [ローカル] /tmp/*
2. ダウンロード済みのファイルを特定フォルダに移動• [Box] /Downloaded
接続してみる 2’
23
まとめ
Boxに接続にあたって
• APIのドキュメントは詳しくて作りやすい
– リクエスト/レスポンスのJSONサンプルはありがたい
• 一部処理の事前状態が整えるまで時間がかかる
– View APIの表示用リンク作成• リモートの状態を仮定せずに事前にチェックするべき
– Content APIの検索処理• フォルダもファイルも反映が遅い
• リストした結果をローカルでキャッシュするべき
25
DataSpiderで開発するにあたって
• RESTアダプタの秘める可能性
– RESTfulなAPIがあればどんなサービスにもつながる
• 認可コードの取得方法
– 開発フェーズはHTTPトリガーで簡単に取得できる
– 運用フェーズは工夫次第1. 受付用ウェブサービスを別途用意して
⇒ DataSpider@クラウド、独立ウェブサーバ、...
2. DataSpiderサーバで受付用ウェブサービスと連携する⇒ RESTアダプタ、Thunderbus、…
26
【おまけ】
全件削除処理
• View API
• Content API
28
ユティリティ
• ファイルハッシュ計算
FCIV: File Checksum Integrity Verifier (by Microsoft)
http://www.microsoft.com/en-us/download/details.aspx?id=11533
29