前回の記事でAPIキーの発行ができましたので、今回はVultr APIを使ってリージョンの一覧を取得してみます。
「Vultr API」のドキュメントで「Regions」の「List Regions」を参照すると、「/v2/regions」でリージョンの一覧が取得できるようです。
発行済のAPIキーを環境変数「VULTR_API_KEY」に格納します。
$ export VULTR_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ドキュメント内の「Copy」ボタンをクリックしてターミナルに貼り付けて、 jq
コマンドで整形するようにして実行します。
出力結果の最後の「total」からわかるように、全部で32リージョン存在するようです。
$ curl "https://api.vultr.com/v2/regions" \
-s \
-X GET \
-H "Authorization: Bearer ${VULTR_API_KEY}" | jq .
{
"regions": [
{
"id": "ams",
"city": "Amsterdam",
"country": "NL",
"continent": "Europe",
"options": [
"ddos_protection",
"block_storage_storage_opt",
"block_storage_high_perf",
"load_balancers",
"kubernetes"
]
},
・
・
省略
・
・
{
"id": "yto",
"city": "Toronto",
"country": "CA",
"continent": "North America",
"options": [
"ddos_protection",
"block_storage_storage_opt",
"load_balancers",
"kubernetes"
]
}
],
"meta": {
"total": 32,
"links": {
"next": "",
"prev": ""
}
}
}
Vultrでは日本リージョンが提供されているので、「country」が「JP」のデータを抽出してみると、「Osaka」と「Tokyo」にリージョンがあることがわかります。
$ curl "https://api.vultr.com/v2/regions" \
-s \
-X GET \
-H "Authorization: Bearer ${VULTR_API_KEY}" | jq '.regions[] | select(.country == "JP")'
{
"id": "itm",
"city": "Osaka",
"country": "JP",
"continent": "Asia",
"options": [
"ddos_protection",
"block_storage_storage_opt",
"load_balancers",
"kubernetes"
]
}
{
"id": "nrt",
"city": "Tokyo",
"country": "JP",
"continent": "Asia",
"options": [
"ddos_protection",
"block_storage_high_perf",
"block_storage_storage_opt",
"load_balancers",
"kubernetes"
]
}
「Vultr API」のドキュメントで「Regions」の「List available plans in region」を参照すると、「/v2/regions/{region-id}/availability」でリージョン毎に利用可能なインスタンスのプランが確認できるようです。
先ほど取得した「Tokyo」の「id」である「nrt」を使って実行してみると、「Tokyo」リージョンで利用可能なプランの一覧が表示されました。
$ curl "https://api.vultr.com/v2/regions/nrt/availability" \
-s \
-X GET \
-H "Authorization: Bearer ${VULTR_API_KEY}" | jq .
{
"available_plans": [
"vbm-8c-132gb",
"vbm-6c-32gb",
"vbm-24c-256gb-amd",
"vbm-8c-132gb-v2",
"vc2-1c-1gb",
"vc2-1c-2gb",
"vc2-2c-2gb",
"vc2-2c-4gb",
"vc2-4c-8gb",
"vc2-6c-16gb",
"vc2-8c-32gb",
"vc2-16c-64gb",
"vc2-24c-96gb",
"vhf-1c-1gb",
"vhf-1c-2gb",
"vhf-2c-2gb",
"vhf-2c-4gb",
"vhf-3c-8gb",
"vhf-4c-16gb",
"vhf-6c-24gb",
"vhf-8c-32gb",
"vhf-12c-48gb",
"vhf-16c-58gb",
"vhp-1c-1gb-amd",
"vhp-1c-2gb-amd",
"vhp-2c-2gb-amd",
"vhp-2c-4gb-amd",
"vhp-4c-8gb-amd",
"vhp-4c-12gb-amd",
"vhp-8c-16gb-amd",
"vhp-12c-24gb-amd",
"vhp-1c-1gb-intel",
"vhp-1c-2gb-intel",
"vhp-2c-2gb-intel",
"vhp-2c-4gb-intel",
"vhp-4c-8gb-intel",
"vhp-4c-12gb-intel",
"vhp-8c-16gb-intel",
"vhp-12c-24gb-intel",
"voc-c-1c-2gb-25s-amd",
"voc-g-1c-4gb-30s-amd",
"voc-m-1c-8gb-50s-amd",
"voc-c-2c-4gb-50s-amd",
"voc-g-2c-8gb-50s-amd",
"voc-c-2c-4gb-75s-amd",
"voc-c-4c-8gb-75s-amd",
"voc-g-4c-16gb-80s-amd",
"voc-m-2c-16gb-100s-amd",
"voc-s-1c-8gb-150s-amd",
"voc-c-4c-8gb-150s-amd",
"voc-c-8c-16gb-150s-amd",
"voc-g-8c-32gb-160s-amd",
"voc-m-2c-16gb-200s-amd",
"voc-m-4c-32gb-200s-amd",
"voc-c-8c-16gb-300s-amd",
"voc-c-16c-32gb-300s-amd",
"voc-s-2c-16gb-320s-amd",
"voc-g-16c-64gb-320s-amd",
"voc-m-2c-16gb-400s-amd",
"voc-m-4c-32gb-400s-amd",
"voc-m-8c-64gb-400s-amd",
"voc-s-2c-16gb-480s-amd",
"voc-g-24c-96gb-480s-amd",
"voc-c-16c-32gb-500s-amd",
"voc-c-32c-64gb-500s-amd",
"voc-s-4c-32gb-640s-amd",
"voc-g-32c-128gb-640s-amd",
"voc-g-40c-160gb-768s-amd",
"voc-m-4c-32gb-800s-amd",
"voc-m-8c-64gb-800s-amd",
"voc-m-16c-128gb-800s-amd",
"voc-s-4c-32gb-960s-amd",
"voc-g-64c-192gb-960s-amd",
"voc-c-32c-64gb-1000s-amd",
"voc-m-24c-192gb-1200s-amd",
"voc-s-8c-64gb-1280s-amd",
"voc-g-96c-256gb-1280s-amd",
"voc-m-8c-64gb-1600s-amd",
"voc-m-16c-128gb-1600s-amd",
"voc-m-32c-256gb-1600s-amd",
"voc-s-8c-64gb-1920s-amd",
"voc-m-24c-192gb-2400s-amd",
"voc-s-16c-128gb-2560s-amd",
"voc-m-16c-128gb-3200s-amd",
"voc-m-32c-256gb-3200s-amd",
"voc-s-16c-128gb-3840s-amd",
"voc-s-24c-192gb-3840s-amd",
"voc-m-24c-192gb-4800s-amd",
"voc-s-24c-192gb-5760s-amd",
"voc-s-32c-256gb-5760s-amd",
"vcg-a16-2c-8g-2vram",
"vcg-a100-1c-6g-4vram",
"vcg-a16-2c-16g-4vram",
"vcg-a16-3c-32g-8vram",
"vcg-a40-2c-10g-4vram",
"vcg-a16-6c-64g-16vram",
"vcg-a16-12c-128g-32vram",
"vcg-a16-24c-256g-64vram",
"vcg-a16-48c-496g-128vram",
"vcg-a16-96c-960g-256vram"
]
}
「Vultr API」のドキュメントにプランのタイプが表示されており、今後利用したいと考えているのは標準タイプの「vc2」なので、「available_plans」が「vc2-」で始まるもののみを抽出してみると、以下の結果が得られました。
$ curl "https://api.vultr.com/v2/regions/nrt/availability" \
-s \
-H "Authorization: Bearer ${VULTR_API_KEY}" | jq '.available_plans[] | select(startswith("vc2-"))'
"vc2-1c-1gb"
"vc2-1c-2gb"
"vc2-2c-2gb"
"vc2-2c-4gb"
"vc2-4c-8gb"
"vc2-6c-16gb"
"vc2-8c-32gb"
"vc2-16c-64gb"
"vc2-24c-96gb"