Illustration by Freepik Storyset
はじめに
当社では古くからGMOデジロック株式会社さんの運営するバリュードメイン(https://www.value-domain.com/)で取得しているドメインがそこそこの数あり、ながらく利用させて頂いているのですが、実は困りごともありました。
困りごと
長くドメインを利用するということは、それはつまりドメインを利用するサービスを長く運用しているということであり、当然その間別のサービスを増やせば増やすほど管理するドメインもまた徐々に増えてきているということでもあります。
当社が使っているドメインは過去の経緯からサービスの内容や用途別にアカウントが複数ありました。
購入しているドメイン一覧を取得するにはそれぞれのアカウントにログインして確認する必要があり、
- アカウントA ログイン
- アカウントA ドメイン一覧取得
- アカウントA ログアウト
- アカウントB ログイン
- (以下繰り返し)
と、何度もログインを繰り返さなくてはならず、今契約しているドメインの総個数を確認するとか面倒で仕方がないなと思っていました。
そう、これまでは。
転機
そのバリュードメインですが昨年APIの提供が行われました。
ドメインの購入や更新、レンタルサーバー向けのAPIが提供されています。
何をするのか
アカウントの数はたかが知れていますが毎月毎日のように自社が契約しているドメイン一覧を取得するのでは地味に大変です。
ここは提供されているAPI ドメインの情報一覧取得 を利用してアカウントごとに管理しているドメイン一覧を取得するようにすることで手間を削減しましょう。
事前準備
API-KEYの発行
バリュードメインのコントロールパネルログイン後、下図のメニューからAPI-KEYを発行しておきます。
コントロールパネルのメニュー
発行されたAPI-KEY
API-KEYを発行したらKEYを保存しておきます。
参考:API-KEYの一時的な有効/無効
API-KEY発行後はKEYの有効/無効を設定できます。
不要になったら忘れずに無効化しておきましょう。
取得したAPI-KEYを元にconfigファイルを作成する
作成例:valuedomain.config
1 2 3 4 5 6 7 8 9 10 11 12 |
[DEFAULT] valuedomain.accounts = accountA, accountB, accountC [accountA] api-key = {API_KEY_1} [accountB] api-key = {API_KEY_2} [accountC] api-key = {API_KEY_3} |
※ accountA~Cは利用しているアカウント名を設定する
※{API_KEY_X}の部分は取得したAPI-KEYを記入する
pythonのスクリプトを作成する
作成例:valuedomain.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import requests import configparser config = configparser.ConfigParser() config.read('valuedomain.config') domains = config['DEFAULT']['valuedomain.accounts'].replace(' ','').split(',') base_url = 'https://api.value-domain.com/v1/' action_url = 'domains' request_param = '?limit=100' # 100件以上ある場合は適切に処理してください result_list = [] for domain in domains: apikey = config[domain]['api-key'] headers = {'Authorization': 'Bearer {}'.format(apikey)} r_get = requests.get(base_url + action_url + request_param, headers=headers) json_data = r_get.json() data = { 'domain':domain, 'result_format_type':'json', 'result':json_data['results'] } result_list.append(data) # CSV出力形式 print("account,domainname,registrar,expirationdate,autorenew") for result_set in result_list: vd_domain = result_set['domain'] for domain_data in result_set['result']: pdata = [vd_domain, domain_data['domainname'], domain_data['registrar'], domain_data['expirationdate'], str(domain_data['autorenew'])] print(','.join(pdata)) |
準備は以上です。
それでは実際にドメイン一覧を取得してみます。
実行する
一覧取得の例
複数のアカウントの利用しているドメインの一覧が取得でき、手間が大幅に削減できました。
感想
海外のレジストラなどではAPIを利用できるケースが多いのに対し国内だとまだまだ少ない印象でしたが、ドメインのリセラーであるバリュードメインでAPIが利用できるようになったのは個人的に嬉しい対応でした。
利用する上では
- 各アカウントごとにAPI-KEYが一つしか発行できない(ローリング更新ができない)
- 更新用、参照用など権限の異なるKEYを発行できない
など、運用上で気をつけるべき点がありますが今後のバージョンアップに期待したいと思います。
まとめ
- バリュードメインにはAPIが公開されている
- ドメイン一覧取得の効率化をしたかった → できた
- 複数アカウントを所持している人はAPIの利用がオススメ
付録
Bashスクリプト版
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash account=("accountA" "accountB" "accountC") key=("{API_KEY_1}" "{API_KEY_2}" "{API_KEY_3}") echo "account,domainname,registrar,expirationdate,autorenew" for ((i=0;i < ${#account[@]}; i++)); do API_KEY=${key[i]} account=${account[i]} curl --silent -H GET 'https://api.value-domain.com/v1/domains?limit=100' -H 'Content-Type:application/json;charset=utf-8' -H "Authorization: Bearer ${API_KEY}" | jq -r --arg account $account '.results[] | [$account, .domainname, .registrar, .expirationdate, .autorenew] | @csv' | sed 's/"//g' done |
※ accountA~Cは利用しているアカウント名を設定する
※{API_KEY_X}の部分は取得したAPI-KEYを記入する