Smart Data Platform APIの利用開始¶
Smart Data PlatformのAPIを利用する際の基本的な流れは、以下のとおりとなります。
- ユーザーのAPI鍵とAPI秘密鍵を用いて、APIを利用したいメニューのリージョンに対応するKeystoneからTokenを取得する
- 取得した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