AWS SDKでRoute53の作業を横着するシリーズ
- 「route53domains.checkDomainAvailabilit」でドメインが購入可能か確認
- 取得可能なら「route53domains.registerDomain」でドメインを購入
- 取得できない場合は「route53.createHostedZone」でホステッドゾーンだけ作る
そんな感じのスクリプトです。
var domain = "example.net";
var AWS = require('aws-sdk');
var route53domains = new AWS.Route53Domains({
apiVersion: '2014-05-15',
accessKeyId: "ACCESS_KEY_ID",
secretAccessKey: "SECRET_ACCESS_KEY",
region: "REGION"
});
var params = {
DomainName: domain,
};
route53domains.checkDomainAvailability(params).promise().then( (data) => {
var response = .domain + ' is ' + data.Availability;
if ( data.Availability == 'AVAILABLE') {
console.log('Register your Domain in Route53Domains');
var params = {
AdminContact: contacts,
DomainName: domain,
DurationInYears: 1,
RegistrantContact: contacts,
TechContact: contacts,
AutoRenew: true,
PrivacyProtectAdminContact: true,
PrivacyProtectRegistrantContact: true,
PrivacyProtectTechContact: true
};
return route53domains.registerDomain(params).promise();
} else {
console.log('Create Route53 Hosted Zone');
var params = {
CallerReference: "XXX",
Name: domain,
};
var route53 = new AWS.Route53({
apiVersion: '2014-05-15',
accessKeyId: "ACCESS_KEY_ID",
secretAccessKey: "SECRET_ACCESS_KEY",
region: "REGION"
});
return route53.createHostedZone(params).promise();
}
}).then( (data) => {
console.log(data);
});
ドメイン取得した場合の戻り値
{ OperationId: 'fee25dbf-04d4-44df-8861-eff2312a4c8f' }
HostedZone作った場合の戻り値
{
Location: 'https://route53.amazonaws.com/2013-04-01/hostedzone/XXXX',
HostedZone: {
Id: '/hostedzone/XXXXXX',
Name: 'example.net.',
CallerReference: 'XXXX',
Config: {
PrivateZone: false
},
ResourceRecordSetCount: 2
},
ChangeInfo: {
Id: '/change/XXXXXXXX',
Status: 'PENDING',
SubmittedAt: Tue Jun 07 2016 19:56:54 GMT+0900 (JST)
},
DelegationSet: {
NameServers: [
'ns-XXX.awsdns-38.co.uk',
'ns-XX.awsdns-01.com',
'ns-XXX.awsdns-05.net',
'ns-XXXX.awsdns-41.org'
]
}
}