Smart Data Platform APIの利用開始

Smart Data PlatformのAPIを利用する際の基本的な流れは、以下のとおりとなります。

  1. ユーザーのAPI鍵とAPI秘密鍵を用いて、APIを利用したいメニューのリージョンに対応するKeystoneからTokenを取得する
  2. 取得したTokenを認証情報として利用し、メニューのAPIコールを行う

Smart Data PlatformにおいてAPIを初めてご利用になる際には、以下の手順を参考にご利用ください。

1. API利用可設定およびAPI権限管理機能(IAMグループとIAMロール)の設定

SDPFのAPIを利用するためには、下記の二つの設定が必要となります。

API利用可設定
ユーザのAPI利用可否をAPI利用可能設定にする必要があります。各ユーザのプロファイル画面より設定ください(詳細は こちら )。
API権限管理機能(IAMグループとIAMロール)の設定
IAMグループとIAMロールを用いて実行可能なAPIの設定を行ってください (デフォルトのIAMグループ、IAMロールのみではAPIを実行することはできません)
IAMロールは許可やAPI実行の条件などを示すもので、ホワイトリスト形式で記述します。IAMグループはIAMロールとユーザーの紐付けを行います。
Tokenを取得するためには、必ずKeystoneに対する権限が必要となります。(KeystoneのToken取得はPOSTメソッドのリクエストのため、verbの設定に注意してください。)
以下はKeystoneおよび管理機能(GETのみ)のAPIを実行するための設定例です。API権限管理機能に関する詳細は こちら をご参照ください。
{
"basePath": "/ecl-keystone",
"ipAddress": "*",
"path": "*",
"verb": "*"
}
{
"basePath": "/ecl-sss",
"ipAddress": "*",
"path": "*",
"verb": "GET"
}

2. API鍵 / API秘密鍵の取得

Smart Data Platformで提供しているAPIの実行にあたっては、Tokenを事前に取得しておくことが必要です。

Token取得にあたっては、事前にAPIを実行するユーザーのAPI鍵/API秘密鍵、およびそのユーザーがアクセスできるテナントのテナントIDをポータルで確認した上で、本サービスで提供しているKeystoneに対して以下のようなAPIを実行してTokenを生成します。

API鍵/API秘密鍵は、ポータル画面の「プロファイル」より新規生成/再生成いただけます(詳細は こちら )。

3. トークン(Token)の取得

2.で取得したAPI鍵とAPI秘密鍵を用い、以下のように利用したいAPIに対応するリージョンのKeystoneへリクエストを実行すると、Tokenを取得できます。
Tokenの有効期限は1時間です。
curl -i \
 -H "Content-Type: application/json" \
 -d '
{
   "auth": {
       "identity": {
           "methods": [
               "password"
           ],
           "password": {
               "user": {
                   "domain": {
                       "id": "default"
                   },
                   "name": "{ApiKey※1}",
                   "password": "{ApiSecret※2}"
               }
           }
       },
       "scope": {
           "project": {
               "id": "テナントID"
           }
       }
   }
}' {KeystoneEndpoint※3}/v3/auth/tokens

注釈

※1:API鍵

※2:API秘密鍵

※3:Keystoneのエンドポイント。利用したいAPIに対応したリージョンのKeystoneエンドポイントを指定する必要があります。(エンドポイント一覧は こちら

上記コマンドを実行すると、下記のようなレスポンスが返却され、”X-Subject-Token:” の値が各サービスで提供しているAPIを実行する際に必要なKeystoneのTokenとなります。

注釈

"X-Subject-Token" を取り扱う際には大文字・小文字を区別しないようにお気をつけください。HTTPレスポンスヘッダー名は、RFC2616にて「大文字・小文字は区別されない」と規定されています。

HTTP等の仕様変更に伴って、予告なく大文字・小文字が変更される場合があります。

HTTP/1.1 201 Created
X-Forwarded-For: 10.20.30.140
Date: Mon, 28 Oct 2019 05:22:15 GMT
Content-Type: application/json
Content-Length: 2441
Connection: keep-alive
X-Forwarded-For: 10.20.30.140
X-Client-Type: APINative
Accept: */*
Vary: X-Auth-Token
x-openstack-request-id: req-58b973eb-7e39-4b01-82b8-832cd4bd7670
X-Subject-Token: e1b37cb197d84e69af37264fc0f167a33
ECL-Transaction-ID: 8f5045cd-7650-4089-b2aa-61a0c6425667
Set-Cookie: TS0149cbf5=015f1f0dc9feae58d23d7ef0048c490504781a965da2c461b0f66d391a43595bd4126ca545677b408e671b3cc9a1b4cdd815e3cf00; Path=/

4. APIの実行

3.で取得したTokenを用いることで、各メニューのAPIを実行できます(Tokenの有効期限は1時間のため、1時間経過後は 3.を実施しTokenを再取得ください)。
下記は、管理機能のAPIを利用し、APIを実行したユーザー自身の情報を取得するリクエストの例です。
curl -i \
 -X GET \
 -H "X-Auth-Token: {KeystoneToken※1}" \
 -H "Content-Type: application/json" \
https://api.ntt.com/sss/api/v2/me

注釈

※1:取得したKeystoneのToken