AWS の Route53 でドメインを作成するスクリプト
R53 でドメインを作成するコマンドラインを Ruby で書いた。
使い方
$ ruby create_record -d ドメイン名 [-h ホスト名]
ex) ruby create_record -d google.com -h rarara
-d ドメイン名、だけを指定すると、新規に hosted zone を作成し、
Aレコードと MXレコードを作成する。
-h ホスト名、も付けると、そのドメインの下に Aレコードと
MXレコードを作成する。
コード
require 'rubygems'
require 'aws-sdk'
require 'optparse'
AWS.config( access_key_id: ‘xxxxxxxxxxxxxxxxxxxxx’, secret_access_key: ‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’ ) IP=’xxx.xxx.xxx.xxx’
def create_record domain, host = nil
r53 = AWS::Route53.new zone = r53.hosted_zones.select { |z| z.name == “#{domain}.” }.first
host1 = host ? “#{host}.#{domain}.” : “#{domain}.” host2 = host ? “www.#{host}.#{domain}.” : “www.#{domain}”
r53.client.change_resource_record_sets( hosted_zone_id: zone.id, change_batch: { changes: [ { action: ‘UPSERT’, resource_record_set: { name: host1, type: ‘A’, ttl: 300, resource_records: [ value: IP ] } }, { action: ‘UPSERT’, resource_record_set: { name: host2, type: ‘A’, ttl: 300, resource_records: [ value: IP ] } }, { action: ‘UPSERT’, resource_record_set: { name: host1, type: ‘MX’, ttl: 300, resource_records: [ value: “10 #{host1}” ] } }, ] } ) end
def create_hosted_zone domain r53 = AWS::Route53.new resp = r53.client.create_hosted_zone({ name: “#{domain}.”, caller_reference: domain }) puts “Name servers:” for ns in resp[:delegation_set][:name_servers] puts ns end create_record domain end
options = {}
OptionParser.new do |opts| opts.banner = ‘Usage: create_record [options]’ opts.on(‘-h [HOST]’, ‘–host [HOST]’, ‘hostname’) do |v| options[:host] = v end opts.on(‘-d [DOMAIN]’, ‘–domain [DOMAIN]’, ‘domain’) do |v| options[:domain] = v end end.parse!
if options[:host] create_record options[:domain], options[:host] else create_hosted_zone options[:domain] end </code>