*

[GoogleAPI千本ノック] Google Cloud DNS API を試してみた

公開日: : 最終更新日:2015/05/29 投稿者: GCP, GoogleAPI千本ノック

こんにちは。
GoogleのAPIを隔週で片っ端から紹介する、GoogleAPI千本ノック
第三回目は、Google Cloud DNS APIです。

Google Cloud DNS とは?

Googleが提供する高いパフォーマンスを特徴とするDNSサーバを使用して、ゾーン・レコードの設定と管理が行えます。お名前.com等でも無料のDNSサーバは提供されており、ゾーン・レコードの設定・管理が行えますが、それらをGoogle Cloud DNSに移譲することができます。また、AWSにも同様のサービス(Amazon Route 53)があります。有料になりますがメリットは応答速度・信頼性の向上・より詳細な設定が可能なこと等です。

※レジストラとしての機能はGoogleドメインです。

CLIとAPI、最近はDevelopers Consoleでも設定ができるようになりました。
APIでプログラマブルに設定できるという点が、他にない良い点だと思われます。
今日は、このサービスのAPIを叩いてどんな感じで使えるのか試してみましょう。

料金体系

クエリ数とゾーン数によって料金がかかる体系になっています。

Google Cloud DNS (Google Cloud Platform)

クエリ数 0~10億クエリまでは、100万クエリ毎に$0.40/月
クエリ数 10億クエリ以上では、100万クエリ毎に$0.20/月加算されます。
Managed Zones数 0~25ゾーンまでは、1ゾーン毎に$0.20/月
Managed Zones数 26ゾーン以上では、1ゾーン毎に$0.10/月加算されます。

Amazon Route 53 (Amazon Web Services)

参考までに確認しましたが、Amazon Web Servicesでもゾーンコストが若干高めになっていますがほぼ同じ料金になっていました。

(標準的)クエリ数 0~10億クエリまでは、100万クエリ毎に$0.40/月
(標準的)クエリ数 10億クエリ以上では、100万クエリ毎に$0.20/月加算されます。
ホストゾーン数 0~25ゾーンまでは、1ゾーン毎に$0.50/月
ホストゾーン数 26ゾーン以上では、1ゾーン毎に$0.10/月加算されます。

OAuth2.0のスコープ

Google Cloud DNS APIにアクセスする際には、次の3種類のスコープを使用します。

表1.スコープの種類
スコープ スコープ概要
(1) https://www.googleapis.com/
auth/cloud-platform
Google Cloud Platform サービスを介して利用者のデータを確認・管理するスコープ
(2) https://www.googleapis.com/
auth/ndev.clouddns.readonly
Google Cloud DNS によってホストされたDNSレコードを確認するのみのスコープ
(3) https://www.googleapis.com/
auth/ndev.clouddns.readwrite
Google Cloud DNSによってホストされたDNSレコードを確認・管理するスコープ

APIのメソッド

Google Cloud DNSは、ゾーンと レコードの2種類のリソースから構成されていて、ゾーンは1つのドメインを管理し、その中で各レコードを管理します。順序としては、dns.managedZones でゾーンを生成し、dns.changes でレコードを追加していきます。
レコードのタイプは A, AAAA, CNAME, MX, NAPTR, NSPTR, SOA, SFP, SRV, TXT が指定できます。

表2.APIメソッドの種類
メソッド 操作 スコープ
dns.changes.create レコードを追加・削除することができます。 (1),(3)
dns.changes.get,
dns.changes.list
レコード一覧を返します。 (1),(2),(3)
dns.managedZones.create,
dns.managedZones.delete
ゾーンを追加・削除します。 (1),(3)
dns.managedZones.get,
dns.managedZones.list
ゾーンの情報を返します。 (1),(2),(3)
dns.projects.get プロジェクト内のAPI制約状態を返します。 (1),(2),(3)

APIを叩いてみた

ではAPIを叩いて実際にドメインが反映されるか試してみたいと思います。

手順は、最初にdns.managedZonesで1つのドメイン管理リソースを作り、dns.changesでAレコードを追加し、ブラウザからWebページが反映されているか確認します。

メソッド:dns.managedZones.create

1つのドメインを登録して、managedZonesを生成します。
OAuth2.0のスコープは、表1の(1)・(3)を使用
下の例では、cloud-aceという名前のゾーン管理を生成し、cloud-ace.jpというドメインを登録しています。

リクエスト

POST https://www.googleapis.com/dns/v1beta1/projects/my-cloud/managedZones
{
    ”name”: “cloud-ace”,
    ”description”: “Zone for testing Google Cloud DNS”,
    ”dnsName”: “cloud-ace.jp.”,
    ”kind”: “dns#managedZone”
}

レスポンス

{
    ”kind”: “dns#managedZone”,
    ”name”: “cloudace”,
    ”dnsName”: “cloudace.jp.”,
    ”description”: “for Cloud Ace”,
    ”id”: “9182328335091994291”,
    ”nameServers”: [
        ”ns-cloud-c1.googledomains.com.”,
        ”ns-cloud-c2.googledomains.com.”,
        ”ns-cloud-c3.googledomains.com.”,
        ”ns-cloud-c4.googledomains.com.”
    ],
    ”creationTime”: “2014-12-18T02:37:52.675Z”
}

レスポンスに nameServers (ネームサーバのアドレス)が含まれて返ってきました。
このnameServersをお名前.com等のレジストラに設定することで、ネームサーバ管理をGoogle Cloud DNS に移譲することができます。
下の例では、お名前.comの管理画面でnameServersの4件のアドレスを設定しています。

図1.お名前.comのネームサーバ管理画面

完了しますと、ネームサーバをお名前.comが用意したネームサーバではなく、Google Cloud DNSを利用するようになります。

メソッド:dns.managedZones.get

名前を指定してゾーン管理情報を取得します。
OAuth2.0のスコープは、表1の(1)・(2)・(3)を使用
下の例では、先ほど登録したcloud-aceという名前のゾーン管理情報を取得しています。

リクエスト

GET https://www.googleapis.com/dns/v1beta1/projects/my-cloud/managedZones/cloud-ace/

レスポンス

{
    ”kind”: “dns#resourceRecordSetsListResponse”,
    ”rrsets”: [
     {
         “kind”: “dns#resourceRecordSet”,
         “name”: “cloud-ace.jp.”,
         “type”: “NS”,
         “ttl”: 21600,
         “rrdatas”: [
             “ns-cloud-c1.googledomains.com.”,
             “ns-cloud-c2.googledomains.com.”,
             “ns-cloud-c3.googledomains.com.”,
             “ns-cloud-c4.googledomains.com.”
         ]
     },
     {
         “kind”: “dns#resourceRecordSet”,
         “name”: “cloud-ace.jp.”,
         “type”: “SOA”,
         “ttl”: 21600,
         “rrdatas”: [
         “ns-cloud-c1.googledomains.com. dns-admin.google.com. 0 21600 3600 1209600 300”
         ]
     }
    ]
}

Developers Console の Cloud DNS から確認することもできました。
gcdns-api-zones1

メソッド:dns.changes.create

ゾーンにレコードを追加します。
OAuth2.0のスコープは、表1の(1)・(3)を使用
下の例では、Aレコードとして、107.167.183.215 を追加しています。
ご存知の通りAレコードは、指定されたホスト名とIPアドレスをひもづけます。

リクエスト

POST https://www.googleapis.com/dns/v1beta1/projects/my-cloud/managedZones/cloud-ace/changes
{
     “additions”: [
     {
         “kind”: “dns#resourceRecordSet”,
         “name”: “www.cloud-ace.jp.”,
         “rrdatas”: [
         “107.167.183.215”
         ],
         “ttl”: 60,
         “type”: “A”
     }
     ]
}

レスポンス

{
     “kind”: “dns#change”,
     “additions”: [
     {
     “kind”: “dns#resourceRecordSet”,
     “name”: “www.cloud-ace.jp.”,
     “type”: “A”,
     “ttl”: 60,
     “rrdatas”: [
         “107.167.183.215”
     ]
     }
     ],
     “startTime”: “2014-12-18T03:02:36.243Z”,
     “id”: “1”,
     “status”: “pending”
}

Aレコードの登録が完了しましたのでDevelopers Consoleから確認してみます。

gcdns-api-zones2

www.cloud-ace.jp の A レコードに 107.167.183.215 が登録されているのが確認できました。

107.167.183.215 には予めapacheを起動しておき、ブラウザからwww.cloud-ace.jpにアクセスしてみますと、反映されているのを確認できました。

gcdns-api-browser

DNSの管理もGoogle Cloud Platformのプロジェクト内で管理ができ、益々Google一本でなんでもできてしまいます。
クライアントライブラリも公開されてますので、実際にプログラムから利用する場合はそちらを使って実装することになるでしょう。

GCEにおける自動化のご要望や、運用管理含めてご相談があれば、

この記事を書いた人

morimori
morimori
メカです。
Cloud Computer と Neural Network に興味があります。

関連記事

東京リージョン内でのGAE・GCS・GCE間の通信はこのくらいだった

11月8日に Google Cloud Platform にて待ちに待った日本リージョンがリ

記事を読む

GCE VPNの検証

GCE VPNのα版が公開されました。α版のためGoogleに申請し許可制ですが、取り急ぎ性能テスト

記事を読む

APIs Explorer使ってみた

GoogleのAPI達 皆さん、APIs Explorer使ってますか? GoogleはGm

記事を読む

GCP×Zencoderで始める動画トランスコーディング

はじめに 以前apps-gcpでは、GCP(GoogleCloudPlatform)と連携可能なA

記事を読む

2015/04/30 GCE vs AWS ベンチマーク

2015/04/30 GCE vs AWS ベンチマーク 本シリーズでは定期的にGCEとEC2のベ

記事を読む

2016/08/12 GCE vs AWS vs Azure ベンチマーク

2016/08/12 GCE vs EC2 vs Azureベンチマーク 本シリー

記事を読む

2016/04/19 GCE vs AWS vs Azure ベンチマーク

2016/04/19 GCE vs EC2 vs Azureベンチマーク 本シリー

記事を読む

[GoogleAPI千本ノック] Google Compute Engine API を試してみた

こんにちは。GoogleのAPIを隔週で片っ端から紹介する、GoogleAPI千本ノック 第二回目

記事を読む

AppEngineでTwilioを試してみた(応用編)

AppEngineでTwilioを試してみた(基本編) AppEngineでTwilioを試し

記事を読む

2015/07/03 GCE vs AWS ベンチマーク

2015/07/03 GCE vs AWS ベンチマーク 本シリーズでは定期的にGCEとEC2のベ

記事を読む

PAGE TOP ↑