2016年12月8日木曜日

バケットの作成

バケットって?

バケットとは、FORGEが提供している、アナタ専用のストレージです。今回はこのバケットを作成してみます。手順は

  1. バケット作成用のアクセストークンを取得する。
  2. バケットを作成する。

の二段階です。この手順ですが、チュートリアルが提供されているので、これを実行してみましょう。

Create an App-Managed Bucket and Upload a File
アプリ用バケットを作成して、ファイルをアップロードする


というまさに今回の目的にピッタリのチュートリアルです。ただし、Before You Begin (始める前に)のところを見てみると、

Make sure that you have registered an app and successfully acquired an OAuth token with scopes bucket:create, bucket:read, and data:write. This will allow you to create a bucket, get bucket details, and upload a file.

アプリケーションを登録し、アクセストークンを「bucket:create」、「bucket:read」、「data:write.」の各スコープを使って取得してください。これらのスコープを使って得たアクセストークンは、「バケットを作る」、「バケットの詳細情報を得る」、「バケットにファイルをアップロードする」ためのトークンとなります。

などとかいています。ということは、これからバケットを新たに作成するのですから

スコープを[bucket:create]として、アクセストークンを取得


しておく必要があるってことですねー。ではまず、前回の例にならってアクセストークンを手に入れてみます。こちらにHTTPリクエストに必要な項目が書かれています。それによると

Method and URI

POST    https://developer.api.autodesk.com/authentication/v1/authenticate

Headers

Content-Type  application/x-www-form-urlencoded

Body Structure

client_id      前回同様、アプリケーションの登録画面にあります。
client_secret   アプリケーションの登録画面にあります
grant_type    必ず「client_credentials」に設定します。
scope       今回は「bucket:create」です。

必要な情報がわかったところで、DHCを起動して設定します。
DHCに必要事項を設定して[Send]
これで、「200 OK」の返事が来るはずです。
説明を追加
もう、アクセストークンを取得するのは、慣れましたね。

Step1:Create a bucket

では、チュートリアルに戻ります。チュートリアルには

Before uploading a file, create a bucket and set a retention policy using the POST buckets endpoint.

ファイルをアップロードする前にバケットを作成し、ファイルを保持する期間を決めてください。

と書いています。バケットにはアップロードされたファイルを保持する期間があります。マニュアルにはこちらに書いています。

Transient

24時間保持

Temporary

30日間保持。

Persistent

ずっと保持。

この3種類です。チュートリアルではTransientを選択しています。
では作成してみましょう・・・・と言いたいところですが、マニュアルの例はcURLコマンドラインによる解説なので、こちらをみて必要な情報を確認しましょう。

これによると、
今回のData Format はJSON
バケットを作成する場合はリクエスト(要求)、レスポンス(回答)ともにJSON形式です。う(*_*)、JSONって何?というわけでWikiを見てみると・・・・

  • JSON(ジェイソン、JavaScript Object Notation)は軽量なデータ記述言語の1つである。

となっていました。えー?JavaScript ぉー(´・ω・`)。そんなもん知らんぞ!

そして、その書式は

  • {キー:値,キー:値・・・・・・}

です。なんだ、簡単じゃん。文字列の書式のことね。これならいけそう。
さらに、だんだんわかってきたのですが、HTTPリクエストには「ヘッダー」と「ボディ」があり、これはDHCの以下の部分に相当するようです。
DHCの画面もヘッダーとボディに分かれている

では、DHCでリクエストの送信先などを設定しましょう。

リクエストの送信先(endpointというらしい)

https://developer.api.autodesk.com/oss/v2/buckets

メソッド

POST

そしてBODYの書式がJSONなので、BOSYの右端の▼をおしてtextを選択します。残念ながらJSONという選択肢はありません。ですが上記したように簡単な書式なのでtextで十分です。
BODYの書式をtextにする

ヘッダーの設定

ヘッダーは次のように指定されています。
ヘッダーに設定する情報

Authorization

Bearer アクセストークン

Content-Type

必ず「application/json

x-ads-region

バケットの保存先。USとEMEAが選択できます。USはアメリカで、EMEAはヨーロッパ、中東、アフリカを示すようです。おそらく物理的なサーバーの位置を言ってるのだとは思いますが、詳細はよくわかりません。必須ではないので、今回は指定しません。

DHCのヘッダーの設定は下の図のようになります。
Bearer(半角スペース)アクセストークン
ボディの設定
ボディ部分で必ず必要な項目は二つだけです。

bucketKey バケットの名前

A unique name you assign to a bucket. It must be globally unique across all applications and
regions, otherwise the call will fail. Possible values: -_.a-z0-9 (between 3-128 characters in
length). Note that you cannot change a bucket key.

グローバルにユニーク、つまり世界でただ一つの名前である必要があります。文字は3以上128以下の文字数で、小文字のアルファベット、数字、-と_と.が使えるそうです。

policyKey

これが上で説明した、ファイルの保持期間で「transient, temporary, persistent」の三つをえらぶことができます。

それではDHCのBODY部分を設定します。文字は""で囲むようにします。
BODYの記述 2行目の末尾に,が必要
バケットの名前は世界でただ一つだけなければならないので特徴的な名前を付ける必要がありますね。それでは[Send]を押してみます。

バケットづくり成功!

反応が返ってきて[200 OK]と出れば成功です。
200 OK バケット作成成功
返ってきたデータをみると以下のようになっています。

{
  "bucketKey": "blacksmithbucket1203",
  "bucketOwner": "n3bCMAZLQ6bRw7t72nNeG4qEsvO7PGYR",
  "createdDate": 1480727832782,
  "permissions":[
      {
         "authId": "n3bCMAZLQ6bRw7t72nNeG4qEsvO7PGYR",
         "access": "full"
      }
   ],
   "policyKey": "transient"
}

無事バケットを作成することができました。ここで、もう一度Sendボタンを押してみます。すると
エラーメッセージ
今度はエラーになりました。reasonのところに「この名前のバケットはすでに存在しています。」というメッセージが出ました。同じ名前のバケットを複数作ることはできないということですね。なにせ世界で唯一の名前でなければならないので、慎重に名前を設定する必要があります。

つぎに、BODYの名前を「Blacksmithbucket1203」など、大文字のアルファベットを入れて、再度[Send]を押してみます。
エラーメッセージ
今度は、400 Bad Request と返されて、reasonに「使える文字は-_.アルファベット小文字と数字で3以上128文字以下」という、命名規則の制限事項が喚起されています。

なかなか、親切じゃないですか!

次回は、このバケットにデータをアップロードしてみます。

0 件のコメント:

コメントを投稿