Cloudn DNS APIリファレンス

本マニュアルでは、 Cloudn DNSのAPIご利用方法に関してご説明いたします。
右上の “索引” や、右のバーにある検索にて検索が可能です。

1. Cloudn APIについて

Cloudn では、各プロダクトごとにAPIを提供しております。
APIを使用することで、コントロールパネルを介さずにお客様のプログラムから直接リソースを操作することが可能です。

以下、 Cloudn DNSのAPIについてご説明いたします。

1.1. Cloudn APIについて

Cloudn では、各プロダクトごとにAPIを提供しております。
APIを使用することで、コントロールパネルを介さずにお客様のプログラムから直接リソースを操作することが可能です。

ご利用にあたっては下記の通りの情報/前提知識が必要となります。

API共通情報

以下、3つの情報がAPIを利用するにあたり必要となります。

  • アクセスキーID
  • 秘密鍵
  • APIエンドポイント

以下の2つを Cloudn ポータルよりログインし、入手します。

  • アクセスキーID

    • APIへのアクセスにおいて、お客様個人のIDを識別するためのキーです。
    • お客様固有のものとなります
  • 秘密鍵

    • APIへのアクセスにおいて、電子署名に利用される鍵です。
    • お客様固有のものとなります

APIエンドポイントについては、各 Cloudn サービスごとに異なります。 下記を参照してください。

API情報 ( Cloudn DNS)

アクセスキーID・秘密鍵入手方法

Cloudn ポータルへログイン

下記URLより、パスワード/IDでログインをします。

https://portal.cloudn-service.com/comgi/login

画面下部”APIアクセスキー・秘密鍵管理”をクリック

画面下部に存在する”APIアクセスキー・秘密鍵管理”をクリックします。

ポータルから秘密鍵へのリンク

Cloudn ポータル最下段、アクセスキーID・秘密鍵管理画面へのリンク

Query API->アクセスキーID・秘密鍵をコピーして利用

アクセスキーID・秘密鍵をコピーして利用します。

アクセスキーID・秘密鍵管理画面キャプチャ

アクセスキーID・秘密鍵管理画面

1.2. API情報 ( Cloudn DNS)

本サービスにて提供しているAPI Server (End Point)のURIは下記となります。

https://dns-api.jp-e1.cloudn-service.com/

注釈

API リクエスト・レスポンスは”HTTPS”にて行います。HTTPはサポートされていません。

[参考]前提知識

Cloudn DNSについて

Cloudn DNSの操作・機能については操作マニュアルを参照してください。

APIの利用方法について

APIを利用するには、クライアントと呼ばれるツールを利用する方法、
もしくはお客様プログラム上において仕様にしたがってAPIを利用する方法が一般的です。

以下、APIクライアントを利用した利用例・プログラム上でAPIを利用するために必要なリクエストの作成例を示します。

注釈

APIのご利用にあたっては、ご利用前に、 Cloudn ポータルより サービスを「利用中」の状態にする必要があります。

1.3. APIクライアントの利用

警告

本章はWebサーバの設定など、サポート対象外の部分の記述を多く含みます。 必ずお客様ご自身で編集前設定のバックアップや設定項目の理解をされた上でのご実施をお願い致します。 また、本ソフトウェアに関しては、あくまで記載した環境での動作を確認したものを掲載しております。オープンソースソフトウェアに関する記載が含まれており、弊社では動作保証などをいたしかねますこと、予めご了承ください。

概要

Cloudn DNSでは、Amazon Web Services Route53 (以下Route53) 互換APIを提供しており、
Route53を操作するためのクライアントである下記三種を利用しながら、操作を行うことが可能です。
また、ホストゾーンを作成するリクエストについては以下のツールが利用可能です。
また、bindより移行を実施する際には、下記のツールが利用可能です。
以下、基本的な操作をコマンドラインより実施可能な、dnscurlを利用するためのセットアップ方法を示します。

dnscurlの利用

前提条件
  • Perl 5.8.8.での動作

  • 以下のCPANモジュールのセットアップ

    • Digest::HMAC_SHA1
    • FindBin
    • MIME::Base64
    • Getopt::Long
    • File::Temp
    • File::Basename
    • Proc::PID::File::Fcntl
    • IO::Handle
  • Perlの動作する環境、コマンドライン

    • Windows

      • Command PromptやPowershell CLI
      • もしくはCygwinなどのCLI環境
    • Linux/Mac

      • ターミナルウィンドウ (Terminal)

注釈

CPANモジュールのインストール方法については CPAN.org - How to install CPAN modules を参照してください。

dnscurlのダウンロード、セットアップ

dnscurlをダウンロードします。

wget http://awsmedia.s3.amazonaws.com/catalog/attachments/dnscurl.pl

注釈

リンクが使えない場合は、下記ウェブサイトより最新版を確認して下さい。

https://aws.amazon.com/developertools/Amazon-Route-53/9706686376855511

ダウンロード先で、実行権限を付与します。

chmod +x dnscurl.pl
次に、秘密鍵・APIアクセスキーを保存するファイルを作成します。
ファイル名は “aws-secrets” で、ホームディレクトリの直下に作成します。
touch ~/.aws-secrets

このファイルに、以下のフォーマットでAPIアクセスキーID,秘密鍵を入力します。

%awsSecretAccessKeys = (
   "TESTUSER" => {
       id => "4YZL3Z5B09K32KQHZ1GC",
       key => "dXdFV0WucdyroAIEAdHEeQv8h7bvTo5I9OklE5of",
   },
);

参考

API認証情報については以下を参照してください

注釈

  • “TESTUSER” の部分は認証キー名となります。半角文字にて任意のものを設定してください
    • この例の場合、”TESTUSER”が認証キー名となります
  • id => “”の部分に、APIアクセスキーIDを入力します
  • key => “”の部分には秘密鍵を入力します
  • 入力間違いや半角/全角のスペース混入などにお気をつけ下さい

上記ファイルを保存し、実行可能にしておきます。

chmod 600 ~/.aws-secrets
dnscurlの利用
シェルにて下記のように実行します
下記のコマンドで、現在あるホストゾーンの一覧を取得するAPI ( GET ListHostedZones - ホストゾーン一覧情報取得 )
を利用可能です。
./dnscurl.pl --keyname TESTUSER -- -s -X GET https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone/

コマンドオプションは以下の通りです。

  • “–keyname”

    • ここに続けて、”~/.aws-secrets”で設定した認証キー名を入力します
    • 上記の場合、TESTUSERで設定された認証キーペアが利用されています
  • “–”

上記の様に、クライアントを利用することでAPIの実行に必要な署名の作成といった作業が簡略化されます。

route53zoneの利用 - (ホストゾーン作成リクエストbodyの生成)

ホストゾーンを作成するリクエストbodyとなるxmlは、先述した以下のツールを用いて生成することが可能です。

以下、route53zoneを利用するためのセットアップ方法を示します。

前提条件

以下のPerl環境が必要です

  • Perl 5.8.8

  • CPANモジュールのインストール

    • Data::GUID
    • Sub::Exporter
    • Data::OptList
    • Sub::Install
    • Params::Util
    • Scalar::List::Utils
route53zoneのダウンロード

route53zoneをダウンロードします。

wget http://awsmedia.s3.amazonaws.com/catalog/attachments/route53zone.pl

注釈

リンクが使えない場合は、下記ウェブサイトより最新版を確認して下さい。

http://aws.amazon.com/code/Amazon-Route-53/3728292204499537

ダウンロード先で、実行権限を付与します。

chmod +x route53zone.pl
route53dnsの利用
シェルにて下記のように実行します
以下の例では、”example.com” ドメインをホストするリクエストbodyのxmlをexample_com.xmlとして保存します。

./route53zone.pl --origin example.com > example_com.xml
example_com.xmlは以下のように生成されます。
必要に応じ、コメントなどを編集します。
<?xml version="1.0" encoding="UTF-8"?>
<CreateHostedZoneRequest xmlns="https://route53.amazonaws.com/doc/2010-10-01/">
 <Name>example.com.</Name>
 <CallerReference>47B49CD8-211E-11E4-BE5E-32A9E6710F98</CallerReference>
 <HostedZoneConfig>
  <Comment>Zone for example.com.</Comment>
 </HostedZoneConfig>
</CreateHostedZoneRequest>

上記をリクエストする場合、dnscurlを用いて以下のように実施します。

$ ./dnscurl.pl --keyname TESTUSER -- -X POST \
-H "Content-Type: text/xml; charset=UTF-8" \
--upload-file example_com.xml \
https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone

脚注

[1]Apache2.0ライセンスで配布されているOSSソフトウェアです。Route53互換APIを利用するために利用可能です。
[2](1, 2) Apache2.0ライセンスで配布されているOSSソフトウェアです。Route53互換APIを利用する際の、ゾーン作成リクエストxmlを生成するために利用可能です。
[3]Apache2.0ライセンスで配布されているOSSソフトウェアです。Route53互換APIを利用する際の、BINDのゾーンファイルからレコードセットを作成するリクエストを生成します。

1.4. リクエストの仕様・作成方法

APIクライアントなどを使用せずにAPIリスクエストを利用する方法を示します。

APIリクエスト形式

Cloudn DNSサービスのリクエストは、REST形式となります。
例えば、本サービスによって管理するゾーンの一覧を取得する、”ListHostedZone” API リクエストは、以下のようになります。
GET/2012-02-29/hostedzone HTTP/1.1
date: Fri, 08 Mar 2013 10:47:41 GMT
X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId=key,Algorithm=HmacSHA1,Signature=s1gnAture
host: dns-api.jp-e1.cloudn-service.com
共通リクエストヘッダ

下記にREST API Requestにおいて用いるHeader形式を示します。

Common Request Header
ヘッダー名 説明
X-Amzn-Authorization 認証に使用する。 (ヘッダー内にアクセスキー、秘密鍵で作成した署名、署名作成時に用いた暗号アルゴリズムが含まれる)
Content-Length ヘッダーを除いたリクエストの長さ(Byte)。 このヘッダーはXMLをアップロードするPUT requestで必要となる。
Content-Type リソースのコンテンツタイプを指定する。 なお、POSTやPUTの場合は必須となる
Date リクエスト送信時の日時を指定する。 この日付を使用して、X-Amzn-Authorizationヘッダーを作成する。 “x-amx-date” が記述されていない場合、必須となる
Host 100-continueを指定した場合、Acknowledgementがかえるまで、Bodyを送信しない。 Response Headerによってrejectメッセージを受取った場合、Bodyは送信しない。 - 有効な値: 100-continue
x-amz-date この日付を使用して、X-Amzn-Authorizationヘッダーを作成する “Date” が記述されていない場合、必須となる
共通レスポンスヘッダ
Common Response Header
ヘッダー名 説明
x-amz-request-id リクエストIDとして返却される

APIリクエストの作成方法

以下、上記のリクエストを例に、Cloudn DNS APIへのリクエストの生成方法を解説します。
Cloudn DNS APIのリクエスト形式は、一般的なHTTPのリクエストと同様に、以下のようになります。
Request Mehtod Path(?query string) Protocol Version
(Header)
(Header)
(......)
(Body)
APIリクエストの認証値
API リクエストの認証が必要となるため、HTTPリクエストに認証値を含める必要があります。
Cloudn DNS APIリクエストの認証には、リクエストに“X-Amzn-Authorization”拡張HTTPヘッダーを用います。

“X-Amzn-Authorization” 拡張HTTPヘッダーに格納する値(認証値)の書式は以下の通りです。
AWS3-HTTPS AWSAccessKeyId=<アクセスキー>,Algorithm=<署名のアルゴリズム>,Signature=<署名の値>
Cloudn DNS APIのリクエストの認証は、 “APIアクセスキー” と、
それと対になる “秘密鍵” によって生成されたKeyed-Hashによる認証値(Keyed-HMAC)によって行われます。

上記の<APIアクセスキー>には、事前に取得したアクセスキーの値を、
署名アルゴリズムにはKeyed-HMACのアルゴリズムを示す、”HmacSHA256”あるいは、”HmacSHA1”の値を、
<署名の値>には、Algorithmで指定した電子署名アルゴリズムを用いてい作成した電子署名をBase64でエンコードした値を含めます。
APIリクエストの署名作成方法
次に、Signatureに格納する”<署名の値>”の作成方法の作成方法について説明します。
電子署名の作成は、以下の順番で実施します。
  1. 電子署名対象の文字列の決定
  2. 電子署名アルゴリズムの決定
  3. 電子署名の作成と、Base64エンコード
まず、電子署名の対象に含める文字列を作成します。
Cloudn DNS APIの電子署名の対象に含める値は、UTF-8でエンコードされた”Date” ヘッダーの値になります。
なお、”x-amz-date”拡張HTTPヘッダーをリクエストに含めた場合はその値を用います。
このことは、リクエストに “Date” もしくは “x-amz-date” は必ず含める必要があることを意味します。
“Date” ヘッダーならびに、”x-amz-date” 拡張HTTPヘッダーの書式は、下記の表のいずれかになります。
Dateヘッダー、”x-amz-date” 拡張HTTPヘッダーの書式
書式例 strftime(3)でのフォーマット 説明
Sun, 06 Nov 1994 08:49:37 GMT “%a, %d %b %Y %R:%S GMT” RFC1123
Sunday, 06-Nov-94 08:49:37 GMT “%A, %d-%b-%y %R:%S GMT” RFC1036
Sun Nov 6 08:49:37 1994 “%a %b %e %R:%S %Y” ANSI C asctime()
“Date” ヘッダーの値(もしくは、”x-amz-date” 拡張HTTPヘッダーの値)が確定したら、
電子署名のアルゴリズムを決定します。

Cloudn DNS APIでサポートしているアルゴリズムは次の通りです。
Cloudn DNS APIのサポートアルゴリズム
アルゴリズム X-Amzn-Authorizationに含める際の表現
HMAC SHA256 HmacSHA256
HMAC SHA1 HmacSHA1
署名対象文字列(Dateもしくは、x-amz-dateヘッダーの値)、に対して、
事前に取得した”秘密鍵”と決定したアルゴリズムを用いて電子署名を作成し、
作成した電子署名をBase64でエンコードします。

作成例は下記のとおりです。
署名の値 = Base64( Algorithm((Dateヘッダーの値), “秘密鍵”) )
“アクセスキー”、”アルゴリズム” 、および作成した “署名の値” を、
“X-Amzn-Authorization” ヘッダーの所定の位置(下記の例を参照)に配置し、
“X-Amzn-Authorization” をリクエストのヘッダーに含めることでリクエストとします。
GET/2012-02-29/hostedzone HTTP/1.1
date: Fri, 08 Mar 2013 10:47:41 GMT
X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId=key,Algorithm=HmacSHA1,Signature=s1gnAture
host: dns-api.jp-e1.cloudn-service.com

なお、APIのメソッドによっては、リクエストにBodyにXMLを付与するものもありますが、 リクエストの認証に用いる”X-Amzn-Authorization“ヘッダーの生成方法に違いはありません。

APIリクエストサンプル

Cloudn DNS APIを利用した Cloudn DNSサービスの利用の流れを示します。

Cloudn DNS APIを利用した基本的な作業の流れは、以下の通りです。
  1. Cloudn DNS APIを利用した情報の作成・登録
  2. Cloudn DNS APIを利用した登録状況の確認
ここでは、”example.com”というゾーンを作成・登録し、SOAレコードの確認までの流れを紹介します。
ゾーンを作成する際に利用するAPI メソッドは、”CreateHostedZone”でBodyにXMLを付与し、前述の方法で、作成した、“X-Amzn-Authorization” ヘッダーを挿入して、HTTPの”POST” メソッドを用いてリクエストを発行します。
(詳細は、「DNS API リファレンス」参照)
リクエストの全体像は、以下のようになります。
CreateHostedZone
  • Header部
POST /2012-02-29/hostedzone HTTP/1.1
date: Mon, 11 Mar 2013 10:33:58 GMT
x-amzn-authorization: AWS3-HTTPS AWSAccessKeyId=Samp1eKey,Algorithm=HmacSHA256,Signature=Sy0me1des4u
host: dns-api.jp-e1.cloudn-service.com
  • Body部
<CreateHostedZoneRequest>
  <Name>example.com</Name>
  <CallerReference>0caaf24ab1a0c33440c06afe99df986365b0781f</CallerReference>
  <HostedZoneConfig>
    <Comment>'example.com' is created at 'Mon, 11 Mar 2013 10:33:58 GMT'</Comment>
  </HostedZoneConfig>
</CreateHostedZoneRequest>

リクエストが正常に受け付けられると、以下の様なレスポンスが返されます。

date: Mon, 11 Mar 2013 10:33:07 GMT
etag: "e48aa57343bdb5a3a15fbe1f4f2aaab6"
cache-control: max-age=0, private, must-revalidate
x-request-id: 29575845f3c8044cf10a138db37a7c6b
x-runtime: 0.030656
x-rack-cache: invalidate, pass
x-frame-options: SAMEORIGIN
status: 201
content-length: 998
connection: close
content-type: text/xml; charset=utf-8

<?xml version="1.0" encoding="UTF-8"?>
<CreateHostedZoneResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
   <HostedZone>
      <Id>/hostedzone/99E9999999999</Id>
      <Name>example.com</Name>
      <CallerReference>0caaf24ab1a0c33440c06afe99df986365b0781f</CallerReference>
      <Config>
         <Comment>example.com is created at Mon, 11 Mar 2013 10:33:04 GMT</Comment>
      </Config>
      <ResourceRecordSetCount>2</ResourceRecordSetCount>
   </HostedZone>
   <ChangeInfo>
      <Id>/change/cafedeadbeaf</Id>
      <Status>PENDING</Status>
      <SubmittedAt>2013-03-11T10:33:07.545Z</SubmittedAt>
   </ChangeInfo>
   <DelegationSet>
      <NameServers>
           <NameServer>ns-05.dns.jp-e1.cloudn-service.com</NameServer>
           <NameServer>ns-06.dns.jp-e1.cloudn-service.com</NameServer>
           <NameServer>ns-07.dns.jp-e1.cloudn-service.com</NameServer>
      </NameServers>
   </DelegationSet>
</CreateHostedZoneResponse>
  • 16行目に示したID

    • 以後、作成・登録したゾーンに対して何らかの操作をする際に指定するIDとなります。
  • 24行目の “ChangeInfo” Tagに含まれるId

    • リクエストが受け付けられた後に、リクエストがDNSサーバに反映されたかどうかを確認する際のチケットになります
    • DNSへのは反映を確認するには、 POST CreateHostedZone - ホストゾーン作成 を呼び出すことによって確認します
    • また、上記のレスポンスの30行目 “NameServer” Tagの値が、リクエストしたゾーンを管理する権威サーバ (Authoritative DNS) となります
“GetChange”は、HTTP のリクエストメソッドに “GET” を指定し、Request Pathに “/2012-02-29/change/<id>”となります。
上記の例ではRequest Pathは、”/2012-02-29/change/cafedeadbeaf” となります。

注釈

“CreateHostedZone” のレスポンス中の、Id Tagの値をそのまま利用すると、 “change” が重複することになるのでご注意下さい。

GetChange

“GetChange” のリクエストは、以下のようになります。

GET /2012-02-29/change/cafedeadbeaf HTTP/1.1
date: Tue, 12 Mar 2013 00:57:53 GMT
x-amzn-authorization: AWS3-HTTPS AWSAccessKeyId=,Algorithm=HmacSHA256,Signature=S1gNatyaaaadayou=
host: dns-api.jp-e1.cloudn-service.com

“GetChange” APIのレスポンスは以下のようになります。

date: Tue, 12 Mar 2013 00:57:55 GMT
etag: "027a3c2600d368c95d3bb38c1c615629"
cache-control: max-age=0, private, must-revalidate
x-request-id: 209a1abaaa7e737d3f4b696e0460c9d5
x-runtime: 0.009997
x-rack-cache: miss
x-frame-options: SAMEORIGIN
status: 200
content-length: 285
connection: close
content-type: text/xml; charset=utf-8

<?xml version="1.0" encoding="UTF-8"?>
<GetChangeResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
   <ChangeInfo>
      <Id>cafedeadbeaf</Id>
      <Status>INSYNC</Status>
      <SubmittedAt>2013-03-11T10:33:07.000Z</SubmittedAt>
   </ChangeInfo>
</GetChangeResponse>
上記レスポンス17行目に示した、”Status” Tagの値が “INSYNC” であれば、
リクエスト時レスポンス30行目に示した権威サーバに登録が反映されたことを示します。
また、 “PENDING” であれは、権威サーバに情報が完全には反映されていないことを示しているため、
反映完了までお待ちください。
ListResourceRecordSets
次に、 “examle.com” のリソースレコードの登録状況を、APIを用いて確認します。
リソースレコードの確認には、 GET ListResourceRecordSets - リソースレコード一覧情報取得 を利用します。
“ListResourceRecordSets” は、Request Path “/2012-02-29/hostedzone/<zone_id>/rrset” に対してGETメソッドを発行することで、実行します。
この例では、Request Pathは、“/2012-02-29/hostedzone/99E9999999999/rrset”となります。
“ListResourceRecordSets” のレスポンスは以下の通りです。
(下記レスポンスの15行目が登録されているリソースレコードリストになります。)
date: Mon, 11 Mar 2013 11:34:34 GMT
etag: "aa4c7518de1091275f25c138cf7512e3"
cache-control: max-age=0, private, must-revalidate
x-request-id: 810a84b3e53b2a2d6949c96db0e5a789
x-runtime: 0.015080
x-rack-cache: miss
x-frame-options: SAMEORIGIN
status: 200
content-length: 1209
connection: close
content-type: text/xml; charset=utf-8

<?xml version="1.0" encoding="UTF-8"?>
<ListResourceRecordSetsResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
   <ResourceRecordSets>
      <ResourceRecordSet>
         <Name>example.com.</Name>
         <Type>SOA</Type>
         <TTL>60</TTL>
         <ResourceRecords>
            <ResourceRecord>
               <Value>ns-05.dns.jp-e1.cloudn-service.com. root.cloudn2.net. 1 7200 900 1209600 86400</Value>
            </ResourceRecord>
         </ResourceRecords>
      </ResourceRecordSet>
      <ResourceRecordSet>
         <Name>example.com.</Name>
         <Type>NS</Type>
         <TTL>60</TTL>
         <ResourceRecords>
            <ResourceRecord>
               <Value>ns-05.dns.jp-e1.cloudn-service.com.</Value>
            </ResourceRecord>
            <ResourceRecord>
               <Value>ns-06.dns.jp-e1.cloudn-service.com.</Value>
            </ResourceRecord>
            <ResourceRecord>
               <Value>ns-07.dns.jp-e1.cloudn-service.com.</Value>
            </ResourceRecord>
         </ResourceRecords>
      </ResourceRecordSet>
   </ResourceRecordSets>
   <IsTruncated>false</IsTruncated>
   <MaxItems>100</MaxItems>
</ListResourceRecordSetsResponse>

2. AmazonWebService Route53互換API

AmazonWebService Route53互換のAPIについて説明します。

2.1. ホストゾーン管理

ホストゾーンを管理するためのAPIについて説明します

GET ListHostedZones - ホストゾーン一覧情報取得

概要
ホストゾーン一覧情報を取得します。
このAPIではデフォルトですべてのホストゾーンが表示されます。
  • Markerパラメータを利用することにより、一覧表示されるゾーンの開始位置を指定することができます。
  • MaxItemsパラメータを利用することにより、一覧表示するゾーン数を指定することができます。
例: maxitems=1&marker=”表示したいホストゾーン名”

上記のようなパラメータを指定することで、任意のホストゾーン情報を表示することができます。
リソースURI
以下のリソースに対しGETリクエストを送信してください。
エンドポイントと合わせて絶対URIでリクエストする必要があります。
2012-02-29/hostedzone
リクエスト
リクエストメソッド
  • GET
リクエストパラメータ
リクエストパラメータ一覧
パラメータ名 説明 必須
marker 取得したいホストゾーンの指定を行う “marker” に一致したホストゾーンより “maxitems” で指定した数のホストゾーン一覧を返却する No
maxitems 返却されるホストゾーン数を指定する デフォルト:100 No
Body
  • 無し
レスポンス
レスポンス (Body)
  • 形式:XML
Response(Body)
Node名 説明 子Node
ListHostedZoneResponse Marker, HostedZones, MaxItems, IsTruncated, NextMarker
HostedZones HostedZone
HostedZone Id, Name, CallerReference, Config, ResourceRecordSetCount
Id 作成されたホストゾーンのID  
Name ゾーン作成時に指定したName  
CallerReference ゾーン作成時に指定したCallerReference  
Config Comment
Comment ゾーン作成時に指定したComment  
ResourceRecordSetCount ホストゾーン内に登録されているレコード数  
Marker リクエスト時に “marker” を指定した場合に返却される  
IsTruncated まだ表示されていないホストゾーンがある場合、”true”が返却される  
NextMarker “IsTruncated” がtrueの場合、次のホストゾーン名を返却する  
MaxItems リクエスト時に “maxitem” で入力した数が返却される  
サンプルAPIコール&レスポンス
サンプルAPIコール
$ ./dnscurl.pl --keyname TESTUSER \
-- -s -X GET https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone
サンプルAPIレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<ListHostedZonesResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
   <HostedZones>
      <HostedZone>
         <Id>/hostedzone/0654FA8224E04E</Id>
         <Name>example.com.</Name>
         <CallerReference>dns_20140731122847139</CallerReference>
         <ResourceRecordSetCount>2</ResourceRecordSetCount>
      </HostedZone>
   </HostedZones>
   <IsTruncated>false</IsTruncated>
   <MaxItems>100</MaxItems>
</ListHostedZonesResponse>

GET GetHostedZone - ホストゾーン情報取得

概要

ホストゾーンについての詳細情報を取得します。

リソースURI
以下のリソースに対しGETリクエストを送信してください。
エンドポイントと合わせて絶対URIでリクエストする必要があります。
なお、${HOSTEDZONEID}と示した部分は対象のホストゾーンIDを使用して下さい。
2012-02-29/hostedzone/${HOSTEDZONEID}

参考

ホストゾーンIDについては、以下のAPIで取得が可能です。

リクエスト
リクエストメソッド
  • GET
リクエストパラメータ
リクエストパラメータ一覧
パラメータ名 説明 必須
HostedZoneID ホストゾーン作成時に登録されたホストゾーンID  
Body
  • 無し
レスポンス
レスポンス (Body)
  • 形式:XML
Response(Body)
Node名 説明 子Node
GetHostedZoneResponse HostedZone, DelegationSet
HostedZone Id, Name, CallerReference, Config
Id 作成されたホストゾーンのID  
Name ゾーン作成時に指定したName  
CallerReference ゾーン作成時に指定したCallerReference  
Config Comment
Comment ゾーン作成時に指定したComment  
ResourceRecordSetCount ホストゾーン内に登録されているレコード数  
DelegationSet NameServers
NameServers NameServer
NameServer ゾーンファイルが登録されたネームサーバ  
サンプルAPIコール&レスポンス
サンプルAPIコール

Idを利用してリソースをGETします

$ ./dnscurl.pl --keyname TESTUSER \
-- -s -X GET https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone/0654FA8224E04E/
サンプルAPIレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<GetHostedZoneResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
   <HostedZone>
      <Id>/hostedzone/0654FA8224E04E</Id>
      <Name>example.com.</Name>
      <CallerReference>dns_20140731122847139</CallerReference>
      <Config>
         <Comment></Comment>
      </Config>
      <ResourceRecordSetCount>2</ResourceRecordSetCount>
   </HostedZone>
   <DelegationSet>
      <NameServers>
         <NameServer>ns-17.dns.jp-e1.cloudn-service.com.</NameServer>
         <NameServer>ns-18.dns.jp-e1.cloudn-service.com.</NameServer>
         <NameServer>ns-19.dns.jp-e1.cloudn-service.com.</NameServer>
      </NameServers>
   </DelegationSet>
</GetHostedZoneResponse>

POST CreateHostedZone - ホストゾーン作成

概要
新しいホストゾーンを作成します。

送信されたリクエストには “CreateHostedZoneRequest” 要素を記述したXMLドキュメントが含まれる必要があります。
レスポンスはホストゾーンについてのメタデータが含まれた “CreateHostedZoneResponse” 要素が返ってきます。

注釈

  • トップレベル・ドメイン(TLD)に対してホストゾーンを作成することはできません
  • Cloudn DNSはデフォルトのSOAレコードと3つのNSレコードをゾーンに対して自動的に作成します
  • ホストゾーンのNSレコードはお客様のドメインを代理するネームサーバです
  • ゾーンを作成した際の初期ステータスはPENDINGです
  • NSレコードおよびSOAレコードが全ての Cloudn DNSで利用可能になった際に、ステータスはINSYNCに変更されます

参考

以下のAPIで作成後のリクエスト状態確認が可能です。

また、以下のAPIで作成後のホストゾーン一覧取得が確認可能です。

作成後にはIDを利用しレコードなどの詳細情報を取得可能です

リクエストbodyの作成方法は以下をご覧ください。

リソースURI
以下のリソースに対しPOSTリクエストを送信してください。
エンドポイントと合わせて絶対URIでリクエストする必要があります。
2012-02-29/hostedzone
リクエスト
リクエストメソッド
  • POST
リクエストパラメータ
  • 無し
Body
  • 形式:XML
Request(Body)
Node名 説明 子Node 必須
CreateHostedZoneRequest リクエストコンテナ Name, CallerReference, HostedZoneConfig Yes
Name ドメインの名前   Yes
CallerReference ゾーン作成毎に一意になる任意の文字列   Yes
HostedZoneConfig Comment No
Comment 任意のコメント   No

注釈

“CallerReference” はリクエストの重複を防ぐために利用される一意なIDです。 128byte以下のUnicode文字列で、ご利用のアカウントの中で一意であれば、自由に設定することができます。

レスポンス
レスポンス (Body)
  • 形式:XML
Response(Body)
Node名 説明 子Node
CreateHostedZoneResponse HostedZone, ChangeInfo, DelegationSet
HostedZone Id, Name, CallerReference, Config
Id 作成されたホストゾーンのID  
Name ゾーン作成時に指定したName  
CallerReference ゾーン作成時に指定したCallerReference  
Config Comment
Comment ゾーン作成時に指定したComment  
ResourceRecordSetCount ホストゾーン内に登録されているレコード数  
ChangeInfo Id, Status, SubmittedAt
Id 変更履歴ID  
Status 現在の状態 - PENDING: すべてのDNSが使用可能ではないことを示す - INSYNC: すべてのDNSが使用可能であることを示す  
SubmittedAt 作成された日付  
DelegationSet NameServers
NameServers NameServer
NameServer ゾーンファイルが登録されたネームサーバ  
サンプルAPIコール&レスポンス
サンプルAPIコール

事前にリクエストbodyとなるXMLを生成します。 以下、example.comというホストゾーンを追加するためのリクエストbodyとなるxmlです。

  • “example_com.xml”
<?xml version="1.0" encoding="UTF-8"?>
<CreateHostedZoneRequest xmlns="https://route53.amazonaws.com/doc/2010-10-01/">
 <Name>example.com.</Name>
 <CallerReference>298C48F8-1EDC-11E4-B694-AE91E6710F98</CallerReference>
 <HostedZoneConfig>
  <Comment>Zone for example.com.</Comment>
 </HostedZoneConfig>
</CreateHostedZoneRequest>

xmlをbodyとし、POSTを実施します。

$ ./dnscurl.pl --keyname TESTUSER -- -X POST \
-H "Content-Type: text/xml; charset=UTF-8" \
--upload-file example_com.xml \
https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone
サンプルAPIレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<CreateHostedZoneResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
   <HostedZone>
      <Id>/hostedzone/EAB6E6A9B3F74A</Id>
      <Name>example.com.</Name>
      <CallerReference>47B49CD8-211E-11E4-BE5E-32A9E6710F98</CallerReference>
      <Config>
         <Comment>Zone for example.com.</Comment>
      </Config>
      <ResourceRecordSetCount>2</ResourceRecordSetCount>
   </HostedZone>
   <ChangeInfo>
      <Id>/change/13bf7da666be41</Id>
      <Status>PENDING</Status>
      <SubmittedAt>2014-08-11T06:11:09Z</SubmittedAt>
   </ChangeInfo>
   <DelegationSet>
      <NameServers>
           <NameServer>ns-08.dns.jp-e1.cloudn-service.com.</NameServer>
           <NameServer>ns-09.dns.jp-e1.cloudn-service.com.</NameServer>
           <NameServer>ns-10.dns.jp-e1.cloudn-service.com.</NameServer>
      </NameServers>
   </DelegationSet>
</CreateHostedZoneResponse>

DELETE DeleteHostedZone - ホストゾーン削除

概要
ホストゾーンを削除します。

注釈

デフォルトのSOAレコードおよびNSレコード以外のリソース・レコードがあった場合、 ホストゾーンを削除する前にそれらのレコードを削除する必要があります。

レコードを含んだホストゾーンを削除しようとした場合、 Cloudn DNSはHostedZoneNotEmptyエラーにより削除リクエストを拒否します。

リソースURI
以下のリソースに対しGETリクエストを送信してください。
エンドポイントと合わせて絶対URIでリクエストする必要があります。
なお、${HOSTEDZONEID}と示した部分は対象のホストゾーンIDを使用して下さい。
2012-02-29/hostedzone/${HOSTEDZONEID}

参考

ホストゾーンIDについては、以下のAPIで取得が可能です。

リクエスト
リクエストメソッド
  • DELETE
リクエストパラメータ
リクエストパラメータ一覧
パラメータ名 説明 必須
HostedZoneID ホストゾーン作成時に登録されたホストゾーンID  
Body
  • 無し
レスポンス
レスポンス (Body)
  • 形式:XML
Response(Body)
Node名 説明 子Node
DeleteHostedZoneResponse ChangeInfo
ChangeInfo Id, Status, SubmittedAt
Id 変更履歴ID  
Status 現在の状態 - PENDING: すべてのDNSが使用可能ではないことを示す - INSYNC: すべてのDNSが使用可能であることを示す  
SubmittedAt 作成された日付  
サンプルAPIコール&レスポンス
サンプルAPIコール

Idを利用してリソースをdeleteします。

$ ./dnscurl.pl --keyname TESTUSER \
-- -s -X delete https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone/0654FA8224E04E/
サンプルAPIレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<DeleteHostedZoneResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
   <ChangeInfo>
      <Id>/change/e2b71b1a2fe04c</Id>
      <Status>PENDING</Status>
      <SubmittedAt>2014-08-11T05:34:54Z</SubmittedAt>
   </ChangeInfo>
</DeleteHostedZoneResponse>

2.2. レコードセット管理

レコードセットを管理するためのAPIについて説明します

GET ListResourceRecordSets - リソースレコード一覧情報取得

概要
リソースレコードのリストを取得します。

このアクションは、name要素とtype要素によって指定された位置から順に、指定した数のリソースレコードのリストを取得します。
ソート順は最初にドメイン名 (com.ntt.wwwのように逆順です)、次にレコードタイプの順となります。

name要素とtype要素を使ってリソースレコードのリストの表示開始位置を調節することができます。

注釈

このアクションはPENDINGステータスのレコードを含め、最新のレコード情報を返します。

リソースURI
以下のリソースに対しGETリクエストを送信してください。
エンドポイントと合わせて絶対URIでリクエストする必要があります。
なお、${HOSTEDZONEID}と示した部分は対象のホストゾーンIDを使用して下さい。
2012-02-29/hostedzone/${HOSTEDZONEID}/rrset

参考

ホストゾーンIDについては、以下のAPIで取得が可能です。

リクエスト
リクエストメソッド
  • GET
リクエストパラメータ
リクエストパラメータ一覧
パラメータ名 説明 必須
name ここで指定したレコードセットと一致したレコードセットから一覧を表示する No
type レコードタイプを指定する No
maxitems 表示するレコードセット数を指定する (デフォルト: 100) No
Body
  • 無し
レスポンス
レスポンス (Body)
  • 形式:XML
Response(Body)
Node名 説明 子Node
ListResourceRecordSets ResourceRecordSets, IsTruncated, MaxItems,
Response NextRecordName, NextRecordType
ListResourceRecordSets ResourceRecordSet
ResourceRecordSet Name, Type, TTL, ResourceRecords
Name リソースレコード名  
Type レコードタイプ  
TTL TTL  
ResourceRecords ResourceRecord
ResourceRecord Value
Value リソースレコードに設定されている値  
IsTruncated (True|False)  
MaxItems リクエスト時に “maxitem” で入力した数が返却される  
NextRecordName “IsTruncated” がtrueの場合、次のホストゾーン名を返却する  
NextRecordType  

注釈

name 要素を指定し、その該当レコードセットがなかった場合には name のアルファベット順で次に該当するレコードが返されます。

サンプルAPIコール&レスポンス
サンプルAPIコール
$ ./dnscurl.pl --keyname TESTUSER \
-- -s -X GET https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone/EAB6E6A9B3F74A/rrset
サンプルAPIレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<ListResourceRecordSetsResponse
    xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
    <ResourceRecordSets>
        <ResourceRecordSet>
            <Name>example.com.</Name>
            <Type>NS</Type>
            <TTL>60</TTL>
            <ResourceRecords>
                <ResourceRecord>
                    <Value>ns-08.dns.jp-e1.cloudn-service.com.</Value>
                </ResourceRecord>
                <ResourceRecord>
                    <Value>ns-09.dns.jp-e1.cloudn-service.com.</Value>
                </ResourceRecord>
                <ResourceRecord>
                    <Value>ns-10.dns.jp-e1.cloudn-service.com.</Value>
                </ResourceRecord>
            </ResourceRecords>
        </ResourceRecordSet>
        <ResourceRecordSet>
            <Name>example.com.</Name>
            <Type>SOA</Type>
            <TTL>60</TTL>
            <ResourceRecords>
                <ResourceRecord>
                    <Value>ns-08.dns.jp-e1.cloudn-service.com. root.cloudn2.net. ( 1 7200 900 1209600 86400 )</Value>
                </ResourceRecord>
            </ResourceRecords>
        </ResourceRecordSet>
    </ResourceRecordSets>
    <IsTruncated>false</IsTruncated>
    <MaxItems>100</MaxItems>
</ListResourceRecordSetsResponse>

GET GetChange - 変更リクエストステータス確認

概要
“POST CreateHostedZone”, “POST ChangeResourceRecordSets”のステータスを取得します。
ステータスは以下のうちのどれかになります。
  • PENDINGは変更要求が全ての|brandname| DNSにレプリケーションされていないことを表します

    • 変更リクエストの初期状態です
  • INSYNCは変更要求が全ての|brandname| DNSにレプリケーションされていることを表します

リソースURI
以下のリソースに対しGETリクエストを送信してください。
エンドポイントと合わせて絶対URIでリクエストする必要があります。

なお、${change_id}は “POST CreateHostedZone”, もしくは “POST ChangeResourceRecordSets”のリクエスト時レスポンスで返されたものを利用します。
2012-02-29/change/${change_id}

参考

${change_id}については以下のAPIを参照してください。

リクエスト
リクエストメソッド
  • GET
リクエストパラメータ
  • なし
Body
  • 無し
レスポンス
レスポンス (Body)
  • 形式:XML
Response(Body)
Node名 説明 子Node
GetChangeResponse ChangeInfo
ChangeInfo Id, Status, SubmittedAt
Id 変更履歴ID  
Status 現在の状態 - PENDING: すべてのDNSが使用可能ではないことを示す - INSYNC: すべてのDNSが使用可能であることを示す  
SubmittedAt 作成された日付  
サンプルAPIコール&レスポンス
サンプルAPIコール
$ ./dnscurl.pl --keyname TESTUSER \
-- -s -X GET https://dns-api.jp-e1.cloudn-service.com/2012-02-29/change/13bf7da666be41
サンプルAPIレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<GetChangeResponse xmlns="https://route53.amazonaws.com/doc/2012-12-12/">
   <ChangeInfo>
      <Id>13bf7da666be41</Id>
      <Status>INSYNC</Status>
      <SubmittedAt>2014-08-11T06:48:23Z</SubmittedAt>
   </ChangeInfo>
</GetChangeResponse>

POST ChangeResourceRecordSets - レコードセット変更

概要
作成したホストゾーンへ、レコードの追加/削除を行います。
リクエストにはChangeResourceRecordSetsRequest要素が記述されたXMLドキュメントが含まれる必要があります。

注釈

一度の変更処理において、同じリソース・レコードに関する複数の処理を要求することはできません。 要求した場合、 Cloudn DNSはInvalidChangeBatchエラーを返します。

ただし、同じレコードセットに関する変更処理を要求・実施することは可能です。 レコードセット・リソースレコードの違いに関しては、 DNS操作マニュアル を御覧ください

こちらを利用し、一つの値に関して修正(実際は”DELETE”と”CREATE”)を一度のリクエストにて実施することが可能です。

注釈

同じレコードセットに関するCREATEを別の値で行った場合、2つのリソースレコードができることとなりますが、 レコードセットは1つとして確認できるようになります。

(例): レコードセット “example.com A 192.168.0.2” が存在しているところに、
新規リクエストで “example.com A 192.168.0.3” をCREATEした場合、 レコードセットは “example.com A 192.168.0.2, 192.168.0.3”という形になります。

注釈

ChangeResouceRecordSetsリクエストにより、全ての Cloudn DNSサーバ上でレコードが変更されます。 初期ステータスはPENDINGです。

全てのホストに伝播された際に、ステータスがINSYNCに変更されます。

注釈

以下のChangeResourceRecordSetsリクエストに対する制限にご注意下さい。

  • 一つのリクエストにつき、100以上のChange要素を含めることはできません。
  • 一つのリクエストにつき、1000以上のResourceRecord要素を含めることはできません。
  • 一つのリクエスト中のValue要素における文字列の合計(スペースを含む)は32,000文字以下である必要があります。

参考

以下のAPIで作成後のリクエスト状態確認が可能です。

また、以下のAPIで作成後のレコードセット一覧取得が確認可能です。

リソースURI
以下のリソースに対しPOSTリクエストを送信してください。
エンドポイントと合わせて絶対URIでリクエストする必要があります。
なお、${HOSTEDZONEID}と示した部分は対象のホストゾーンIDを使用して下さい。
2012-02-29/hostedzone/${HOSTEDZONEID}/rrset
リクエスト
リクエストメソッド
  • POST
リクエストパラメータ
  • 無し
Body
  • 形式:XML
Request(Body)
Node名 説明 子Node 必須
ChangeResourceRecordSetsRequest ChangeBatch Yes
ChangeBatch Comment, Changes Yes
Comment 任意のコメント No
Changes Change Yes
Change Action, ResourceRecordSet Yes
Action “CREATE”, “DELETE” のどちらかを指定 Yes
ResourceRecordSet Name, Type, AliasTarget, TTL, ResourceRecords Yes
Name リソースレコードに登録するドメインネームをFQDNで記述する。   Yes
Type 登録するリソースレコードのタイプを指定 有効な値: - A - AAAA - CNAME - MX - NS - PTR - SPF - SRV - TXT Yes
AliasTarget Alias Resource Record Setsを利用する場合、必須。 HostedZoneId, DNSName Yes
HostedZoneId LBAのHosted zone ID。 Alias Resource Record Setsを利用する場合、必須。   Yes
DNSName LBAをDNS名で指定する。 Alias Resource Record Setsを利用する場合、必須。   Yes
TTL リソースレコードのTTL Alias Resource Record Setsを利用しない場合、必須。   Yes
ResourceRecords Alias Resource Record Setsを利用しない場合、必須。 ResourceRecord Yes
ResourceRecord Alias Resource Record Setsを利用しない場合、必須。 Value Yes
Value 指定した “Type” に対応した値。 Alias Resource Record Setsを利用しない場合、必須。   Yes

注釈

AliasTargetとして指定できるのは以下の通りです。

  • Cloudn DNSでストアされているDNSレコード
  • Cloudn LBA、全タイプ

なお、LBAのHostedZoneIdについては以下をご利用下さい

  • LBA: 東日本リージョンFLATタイプ

    • 91873C90C12749
  • LBA: 東日本リージョンVPCタイプ OpenNW

    • B9323F81B29B46
  • LBA: 西日本リージョンFLATタイプ

    • 02DCDA8B7A1340
  • LBA: 米国リージョンFLATタイプ

    • 119738B0B9B345
レスポンス
レスポンス (Body)
  • 形式:XML
Response(Body)
Node名 説明 子Node
ChangeResourceRecord SetsResponse
SetsResponse ChangeInfo
ChangeInfo Id, Status, SubmittedAt
Id 変更履歴ID  
Status 現在の状態 - PENDINGはすべてのDNSが使用可能ではないことを示す - INSYNCはすべてのDNSが使用可能であることを示す  
SubmittedAt 作成された日付  
サンプルAPIコール&レスポンス
Aレコードの作成
  • example.comのHostedZoneId

    • EAB6E6A9B3F74A

上記のホストゾーンに対し、Aレコードを作成します。

サンプルAPIコール

事前にリクエストbodyとなるXMLを生成します。

  • “rr-request.xml”
<ChangeResourceRecordSetsRequest>
    <ChangeBatch>
        <Comment>
            <Changes>
                <Change>
                    <Action>CREATE</Action>
                    <ResourceRecordSet>
                        <Name>example.com.</Name>
                        <Type>A</Type>
                        <TTL>300</TTL>
                        <ResourceRecords>
                            <ResourceRecord>
                                <Value>192.0.2.2</Value>
                            </ResourceRecord>
                        </ResourceRecords>
                    </ResourceRecordSet>
                </Change>
            </Changes>
        </Comment>
    </ChangeBatch>
</ChangeResourceRecordSetsRequest>

xmlをbodyとし、POSTを実施します。

$ ./dnscurl.pl --keyname TESTUSER \
-- -X POST -H "Content-Type: text/xml; charset=UTF-8" \
--upload-file rr-request.xml \
https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone/EAB6E6A9B3F74A/rrset
サンプルAPIレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<ChangeResourceRecordSetsResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
<ChangeInfo>
  <Id>/change/c1f4da5a8fe640</Id>
  <Status>PENDING</Status>
  <SubmittedAt>2014-08-11T07:34:47Z</SubmittedAt>
</ChangeInfo>
</ChangeResourceRecordSetsResponse>
LBAを指定したエイリアスレコードの作成

以下の例で実施します

  • LBAのDNS名

    • cloudnlba-manual-1406987071.lba2.jp-e1.cloudn-service.com
  • LBAの種類

    • 東日本リージョンFLATタイプ
  • 対象レコード名

    • exmple.com
サンプルAPIコール

事前にリクエストbodyとなるXMLを生成します。

  • “rr-request.xml”
<ChangeResourceRecordSetsRequest>
    <ChangeBatch>
        <Comment>
            <Changes>
                <Change>
                    <Action>CREATE</Action>
                    <ResourceRecordSet>
                        <Name>example.com.</Name>
                        <Type>A</Type>
                        <AliasTarget>
                            <HostedZoneId>91873C90C12749</HostedZoneId>
                            <DNSName>cloudnlba-manual-1406987071.lba2.jp-e1.cloudn-service.com</DNSName>
                        </AliasTarget>
                    </ResourceRecordSet>
                </Change>
            </Changes>
        </Comment>
    </ChangeBatch>
</ChangeResourceRecordSetsRequest>

xmlをbodyとし、POSTを実施します。

$ ./dnscurl.pl --keyname TESTUSER \
-- -X POST -H "Content-Type: text/xml; charset=UTF-8" \
--upload-file rr-request.xml \
https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone/EAB6E6A9B3F74A/rrset
サンプルAPIレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<ChangeResourceRecordSetsResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
<ChangeInfo>
  <Id>/change/c1f4da5a8fe640</Id>
  <Status>PENDING</Status>
  <SubmittedAt>2014-08-11T07:34:47Z</SubmittedAt>
</ChangeInfo>
</ChangeResourceRecordSetsResponse>
DNSレコードを指定したエイリアスレコードの作成

以下の例で実施します

  • example.comのHostedZoneId

    • EAB6E6A9B3F74A
  • エイリアス対象レコード名

    • example.exmple.com
  • 作成エイリアスレコード

    • alias.example.com
サンプルAPIコール

事前にリクエストbodyとなるXMLを生成します。

  • “rr-request.xml”
<ChangeResourceRecordSetsRequest>
    <ChangeBatch>
        <Comment>
            <Changes>
                <Change>
                    <Action>CREATE</Action>
                    <ResourceRecordSet>
                        <Name>alias.example.com.</Name>
                        <Type>A</Type>
                        <AliasTarget>
                            <HostedZoneId>EAB6E6A9B3F74A</HostedZoneId>
                            <DNSName>example.example.com.</DNSName>
                        </AliasTarget>
                    </ResourceRecordSet>
                </Change>
            </Changes>
        </Comment>
    </ChangeBatch>
</ChangeResourceRecordSetsRequest>

xmlをbodyとし、POSTを実施します。

$ ./dnscurl.pl --keyname TESTUSER \
-- -X POST -H "Content-Type: text/xml; charset=UTF-8" \
--upload-file rr-request.xml \
https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone/EAB6E6A9B3F74A/rrset
サンプルAPIレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<ChangeResourceRecordSetsResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
<ChangeInfo>
  <Id>/change/c1f4da5a8fe640</Id>
  <Status>PENDING</Status>
  <SubmittedAt>2014-08-11T07:34:47Z</SubmittedAt>
</ChangeInfo>
</ChangeResourceRecordSetsResponse>
レコードセットの修正

以下の例で実施します

  • example.comのHostedZoneId

    • EAB6E6A9B3F74A
変更対象レコードセット (example.com A 192.0.2.2) を (exmple.com A 192.0.2.3)へ変更します。
実際の動作は、”DELETE”, “CREATE”を同時に行う形になります。
サンプルAPIコール

事前にリクエストbodyとなるXMLを生成します。

  • “rr-request.xml”
<ChangeResourceRecordSetsRequest>
    <ChangeBatch>
        <Comment>
            <Changes>
                <Change>
                    <Action>DELETE</Action>
                    <ResourceRecordSet>
                        <Name>example.com.</Name>
                        <Type>A</Type>
                        <TTL>300</TTL>
                        <ResourceRecords>
                            <ResourceRecord>
                                <Value>192.0.2.2</Value>
                            </ResourceRecord>
                        </ResourceRecords>
                    </ResourceRecordSet>
                </Change>
                <Change>
                    <Action>CREATE</Action>
                    <ResourceRecordSet>
                        <Name>example.com.</Name>
                        <Type>A</Type>
                        <TTL>300</TTL>
                        <ResourceRecords>
                            <ResourceRecord>
                                <Value>192.0.2.3</Value>
                            </ResourceRecord>
                        </ResourceRecords>
                    </ResourceRecordSet>
                </Change>
            </Changes>
        </Comment>
    </ChangeBatch>
</ChangeResourceRecordSetsRequest>

xmlをbodyとし、POSTを実施します。

$ ./dnscurl.pl --keyname TESTUSER \
-- -X POST -H "Content-Type: text/xml; charset=UTF-8" \
--upload-file rr-request.xml \
https://dns-api.jp-e1.cloudn-service.com/2012-02-29/hostedzone/EAB6E6A9B3F74A/rrset
サンプルAPIレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<ChangeResourceRecordSetsResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/">
<ChangeInfo>
  <Id>/change/c1f4da5a8fe640</Id>
  <Status>PENDING</Status>
  <SubmittedAt>2014-08-11T07:34:47Z</SubmittedAt>
</ChangeInfo>
</ChangeResourceRecordSetsResponse>