LoginSignup
5

More than 5 years have passed since last update.

JavaScriptでドメインを取得する(AWS SDKのRoute53Domainsを使ってみる)

Last updated at Posted at 2016-06-01

なんのこっちゃらという感じですが、そういうことです。

AWS SDK for JavaScriptに"Route53Domains"というものがありまして、どうやらこれを使うとRoute53でドメインが取得できそうな気配です。

「どうせならドメイン取得も自動でやっちゃいたいよね!」ってことでやってみました。

書いたコード

var AWS = require('aws-sdk');
    var route53domains = new AWS.Route53Domains({
        apiVersion: '2014-05-15',
        accessKeyId: "YOUR_AWS_ACCESS_KEY_ID",
        secretAccessKey: "YOUR_AWS_SECRET_ACCESS_KEY",
        region: "REGION" #省くと怒られる。(いらないはずだけど)
    });

    var contact = {
      AddressLine1: 'YOUR_ADDRESS_LINE1',
      AddressLine2: 'YOUR_ADDRESS_LINE2',
      City: 'YOUR_CITY_NAME',
      ContactType: 'COMPANY',
      CountryCode: 'JP',
      Email: 'hoge@example.jp',
      FirstName: 'YOUR_FIRST_NAME',
      LastName: 'YOUR_LAST_NAME',
      OrganizationName: 'YOUR_COMPANY_NAME',
      ZipCode: '600-0000',
      PhoneNumber : '+81.700000000'
    };

    var params = {
      AdminContact: contact,
      DomainName: 'YOUR_DOMAIN',
      DurationInYears: 1,
      RegistrantContact: contact,
      TechContact: contact,
      AutoRenew: false, #ここをTRUEにすると自動更新されるっぽい
      PrivacyProtectAdminContact: true,
      PrivacyProtectRegistrantContact: true,
      PrivacyProtectTechContact: true
    };

    route53domains.registerDomain(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });

横着して

  • AdminContact
  • RegistrantContact
  • TechContact

の3つを同じにしていますが、規模の大きい会社などではそれぞれちゃんと書いた方がいいと思います。

実行結果

以下のようなJSONが返ってきたら発注成功です。

$ node register_domain.js 
{ OperationId: '81aXXX-XXXX-XXXf26c5998' }

マネージドコンソールからRoute53を見ると、承認待ちになっているのがわかります。
スクリーンショット 2016-06-01 17.54.25.png

確認メールをみる

以下のような確認メールが来てるので、リンクをクリックしましょう。
Verification_of_your_contact_data_-_hide_okamoto_digitalcube_jp_-_株式会社デジタルキューブ_メール.png

クリックするとこうなります。

Email_address_verification.png

ここまでやると、「No further action is required on your part.」というメールが来ます。

5〜10分程度待機すると、以下のようにドメインの登録が完了します。

スクリーンショット 2016-06-01 18.06.46.png

JavaScriptでドメイン取得もできるなんて、すごい世の中になりましたね。。

ドキュメントを見る限りドメイン移管や更新・解約もできる様子なので、また時間を見てトライしてみます。

Route53Domains:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Route53Domains.html

ちなみにPythonのAWS SDKにもRoute53Domainsはあるみたいなので、Python使いな方は是非トライしてみてください。
https://boto3.readthedocs.io/en/latest/reference/services/route53domains.html

[余談]怒られたやつ

電話番号のフォーマットは「'+81.079999999'」

  • 先頭に国番号(日本は+81)を付けます
  • 後ろの電話番号は、先頭の0を省略します
  • 国番号と電話番号「.」でつなぎます
  • ハイフンつけると怒られます
$ node register_domain.js 
{ [InvalidInput: Errors: [ Invalid Phone number [+81.70-999-9999].]]
  message: 'Errors: [ Invalid Phone number [+81.70-999-9999].]',
  code: 'InvalidInput',
  time: Wed Jun 01 2016 17:46:34 GMT+0900 (JST),
  requestId: '58XXX-XXX-XXX-XXX-abXXXXX32',
  statusCode: 400,
  retryable: false,
  retryDelay: 91.30285501014441 }

'HYOGO' is not required for Japan and should not be set

日本は「State」いらないらしい

$ node register_domain.js 
{ [TLDRulesViolation: [ADMIN.STATE: 'HYOGO' is not required for Japan and should not be set, OWNER.STATE: 'HYOGO' is not required for Japan and should not be set, TECH.STATE: 'HYOGO' is not required for Japan and should not be set, BILL.STATE: 'HYOGO' is not required for Japan and should not be set]]
  message: '[ADMIN.STATE: \'HYOGO\' is not required for Japan and should not be set, OWNER.STATE: \'HYOGO\' is not required for Japan and should not be set, TECH.STATE: \'HYOGO\' is not required for Japan and should not be set, BILL.STATE: \'HYOGO\' is not required for Japan and should not be set]',
  code: 'TLDRulesViolation',
  time: Wed Jun 01 2016 17:46:48 GMT+0900 (JST),
  requestId: '6090d3b7-2XXX-1XXXX6-XXX-dXXXX67a9',
  statusCode: 400,
  retryable: false,
  retryDelay: 64.79505992028862 }

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5