APIを使用した設定の方法¶
ここでは、APIを使用してManaged Load Balancerを操作する方法を説明します。
Contents
APIで操作するための事前準備¶
API利用可設定およびIAMロールの設定によるAPI実行権限の制御¶
API利用時はユーザのAPI利用可否をAPI利用可能設定にする必要があります。API利用可能設定をされていない場合は、 こちら を確認し、事前にご設定ください。
また、IAMロールを用いて実行可能なAPIの設定をする必要があります。設定手順は以下の通りとなります。詳細は こちら をご確認ください。
- 初めに こちら の手順でIAMグループを作成します。
- 次に こちら の手順でIAMロールを作成します。
- 最後に こちら の手順でIAMグループとIAMロールおよびユーザの紐付けを実施し、API実行権限の設定は完了です。
(参考)
IAMロールに以下のJSONを設定すると、設定したIPアドレスからの全てのGUI操作とAPI操作の実行権限が付与されます。 ("0.0.0.0/32"のIPアドレスには、実際にご利用いただくクライアントデバイスが利用するパブリックIPアドレスをご指定ください。)
推奨設定ではございませんので、細かい権限の設定をされる場合は、 API権限の設定例 をご確認ください。
{
"basePath" : "*",
"ipAddress" : "0.0.0.0/32",
"path" : "*",
"verb" : "*"
}
Keystoneより認証Tokenを取得する¶
APIでの操作を利用するために必要な認証Tokenを取得します。
認証Tokenを取得するためには以下の情報が必要です。
- お客さま固有のAPI鍵、API秘密鍵
- 確認方法は こちら 。
- API操作を実施するManaged Load Balancerを利用しているテナントID
- 確認方法は こちら 。
- API操作を実施するManaged Load Balancerを利用しているリージョン
下記の通り、curlコマンドを利用してリクエストを行います。 ({}で記載されたところには上記で取得したAPI鍵、API秘密鍵情報、テナントID、リージョンを入力します。)
- {APIkey} : お客さま固有のAPI鍵
- {APIsecret} : お客さま固有のAPI秘密鍵
- {TenandId} : API操作を実施するManaged Load Balancerを利用しているテナントID
- {Region} : API操作を実施するManaged Load Balancerを利用しているリージョン
$ curl -i \
-H "Content-Type: application/json" \
-d '
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"domain": {
"id": "default"
},
"name": "{APIkey}",
"password": "{APIsecret}"
}
}
},
"scope": {
"project": {
"id": "{TenandId}"
}
}
}
}' https://keystone-{Region}-ecl.api.ntt.com/v3/auth/tokens
下記は認証Token取得のサンプルリクエストになります。
$ curl -i \
-H "Content-Type: application/json" \
-d '
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"domain": {
"id": "default"
},
"name": "DJ0lAxtptGTV9HZbiPPOe1nj9icP0CGV",
"password": "A990fiJklk12H35K"
}
}
},
"scope": {
"project": {
"id": "6c0bdafab1914ab2b2b6c415477defc7"
}
}
}
}' https://keystone-jp1-ecl.api.ntt.com/v3/auth/tokens
リクエストが成功した場合、以下のようなレスポンスが返されます。
HTTP/1.1 201 OK
Date: Mon, 22 Aug 2022 06:49:22 GMT
Content-Type: application/json
Content-Length: 324
Connection: keep-alive
X-Subject-Token: dc03494823a841338430052e9ee95e07
Vary: X-Auth-Token
X-Distribution: Ubuntu
Set-Cookie: TS0183560f=01059ca7b10af7d1eaff84d7b1231b09a7d50550648db89c3aaae5f866871fd0ce11e0895b; Path=/
X-Subject-Tokenと記載された値が認証Tokenです。 (上記の例では、"dc03494823a841338430052e9ee95e07")
APIを使用した設定例(アイドルタイムアウト値の設定)¶
ここでは、APIを使用したManaged Load Balancerの設定例として、「ポリシーの設定」における "アイドルタイムアウト値を指定する"方法を紹介します。
その他の設定については、APIリファレンス にコマンドのサンプルが掲載されていますので、ご参照ください。
対象リソース/操作する設定のコンフィグステータスを確認する¶
アイドルタイムアウト機能は「ポリシー」の設定に含まれています。そのため、対象リソースのポリシー設定のコンフィグステータスを確認します。
ポリシーの詳細表示 から、ポリシーのコンフィグステータスを確認します。
- コンフィグステータスが"CREATE_STAGED"または"UPDATE_STAGED"の場合は、コンフィグステータスが"CREATE_STAGED"または"UPDATE_STAGED"である場合の設定方法 へお進みください。
- コンフィグステータスが"ACTIVE"の場合は、コンフィグステータスが"ACTIVE"である場合の設定方法 へお進みください。
コンフィグステータスが"CREATE_STAGED"または"UPDATE_STAGED"である場合の設定方法¶
設定状況の確認¶
アイドルタイムアウト機能の現在の設定状況の確認をします。
下記の通り、curlコマンドを利用してリクエストを行います。 ({}で記載されたところには以下の情報を入力します。)
- {TOKEN} : Keystoneより認証Tokenを取得する で取得した認証Token
- {Region} : API操作を実施するManaged Load Balancerを利用しているリージョン
- {policy_id} : API操作を実施するポリシーのID
$ curl -sS \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {TOKEN}" \
-X GET \
https://managed-load-balancer-{Region}-ecl.api.ntt.com/v1.0/policies/{policy_id}/staged
リクエストが成功した場合、以下のようなレスポンスが返されます。
{
"policy": {
"algorithm": "round-robin",
"persistence": "none",
"idle_timeout": null,
"sorry_page_url": null,
"source_nat": "disable",
"certificate_id": null,
"health_monitor_id": "e3e92d44-0c92-4017-9b2e-85f34e6e0545",
"listener_id": "c78d0a09-3a95-4a5b-94bd-1cd49cf3ef00",
"default_target_group_id": "732767f6-e840-4345-b23a-c2dfaeb27ae3",
"tls_policy_id": null
}
}
"CREATE_STAGED"の場合は"idle_timeout"がnull、"UPDATE_STAGED"の場合は"idle_timeout"が 120 または 600 とデフォルト値となっていることが確認できます。
(アイドルタイムアウト値を指定していない場合、プロトコルが UDP/TCP の場合は120秒、HTTP/HTTPS の場合は600秒がデフォルト値となります。)
設定方法¶
アイドルタイムアウト値を設定します。
タイムアウト値は1〜10,800秒(3時間)の間で設定可能です。
設定したタイムアウト値は最大で60秒程度の誤差が発生する場合があります。
下記の通り、curlコマンドを利用してリクエストを行い、アイドルタイムアウト値を300秒(5分)で設定します。 ({}で記載されたところには以下の情報を入力します。)
- {TOKEN} : Keystoneより認証Tokenを取得する で取得した認証Token
- {Region} : API操作を実施するManaged Load Balancerを利用しているリージョン
- {policy_id} : API操作を実施するポリシーのID
$ curl -sS \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {TOKEN}" \
-X PATCH \
-d '
{
"policy": {
"idle_timeout": 300
}
}' \
https://managed-load-balancer-{Region}-ecl.api.ntt.com/v1.0/policies/{policy_id}/staged
リクエストが成功した場合、以下のようなレスポンスが返されます。
{
"policy": {
"algorithm": "round-robin",
"persistence": "none",
"idle_timeout": 300,
"sorry_page_url": null,
"source_nat": "disable",
"certificate_id": null,
"health_monitor_id": "e3e92d44-0c92-4017-9b2e-85f34e6e0545",
"listener_id": "c78d0a09-3a95-4a5b-94bd-1cd49cf3ef00",
"default_target_group_id": "732767f6-e840-4345-b23a-c2dfaeb27ae3",
"tls_policy_id": null
}
}
"idle_timeout"が 300 となっていれば、アイドルタイムアウト値が設定されていることが確認できます。
コンフィグステータスが"ACTIVE"である場合の設定方法¶
設定状況の確認¶
アイドルタイムアウト機能の現在の設定状況を確認します。
下記の通り、curlコマンドを利用してリクエストを行います。 ({}で記載されたところには以下の情報を入力します。)
- {TOKEN} : Keystoneより認証Tokenを取得する で取得した認証Token
- {Region} : API操作を実施するManaged Load Balancerを利用しているリージョン
- {policy_id} : API操作を実施するポリシーのID
$ curl -sS \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {TOKEN}" \
-X GET \
https://managed-load-balancer-{Region}-ecl.api.ntt.com/v1.0/policies/{policy_id}
リクエストが成功した場合、以下のようなレスポンスが返されます。
{
"policy": {
"algorithm": "round-robin",
"persistence": "none",
"idle_timeout": 120,
"sorry_page_url": null,
"source_nat": "disable",
"certificate_id": null,
"health_monitor_id": "e3e92d44-0c92-4017-9b2e-85f34e6e0545",
"listener_id": "c78d0a09-3a95-4a5b-94bd-1cd49cf3ef00",
"default_target_group_id": "732767f6-e840-4345-b23a-c2dfaeb27ae3",
"tls_policy_id": null
}
}
"idle_timeout"が 120 または 600 とデフォルト値となっていることが確認できます。
(アイドルタイムアウト値を指定していない場合、プロトコルが UDP/TCP の場合は120秒、HTTP/HTTPS の場合は600秒がデフォルト値となります。)
設定方法¶
アイドルタイムアウト値を設定します。
タイムアウト値は1〜10,800秒(3時間)の間で設定可能です。
設定したタイムアウト値は最大で60秒程度の誤差が発生する場合があります。
下記の通り、curlコマンドを利用してリクエストを行い、アイドルタイムアウト値を300秒(5分)で設定します。 ({}で記載されたところには以下の情報を入力します。)
- {TOKEN} : Keystoneより認証Tokenを取得する で取得した認証Token
- {Region} : API操作を実施するManaged Load Balancerを利用しているリージョン
- {policy_id} : API操作を実施するポリシーのID
$ curl -sS \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {TOKEN}" \
-X POST \
-d '
{
"policy": {
"idle_timeout": 300
}
}' \
https://managed-load-balancer-{Region}-ecl.api.ntt.com/v1.0/policies/{policy_id}/staged
リクエストが成功した場合、以下のようなレスポンスが返されます。
{
"policy": {
"algorithm": "round-robin",
"persistence": "none",
"idle_timeout": 300,
"sorry_page_url": null,
"source_nat": "disable",
"certificate_id": null,
"health_monitor_id": "e3e92d44-0c92-4017-9b2e-85f34e6e0545",
"listener_id": "c78d0a09-3a95-4a5b-94bd-1cd49cf3ef00",
"default_target_group_id": "732767f6-e840-4345-b23a-c2dfaeb27ae3",
"tls_policy_id": null
}
}
"idle_timeout"が 300 となっていれば、アイドルタイムアウト値が設定されていることが確認できます。