@blog.justoneplanet.info

日々勉強

AWS SDK for PythonでRoute53を操作する

以下のスクリプトをサーバー起動時に実行する事でホスト名を固定する事ができる。

#!/usr/bin/python
import sys
import boto
from boto.route53.record import ResourceRecordSets
import boto.ec2
import json
import pprint

key = 'your key'
secret = 'your secret'
domain_name = 'zone name'

document = boto.utils.get_instance_identity()["document"]
region = document["region"]
instance_id = document["instanceId"]

ec2_conn = boto.ec2.connect_to_region(
  region,
  aws_access_key_id=key,
  aws_secret_access_key=secret
)
reservations = ec2_conn.get_all_instances(instance_ids=[instance_id])
instance = reservations[0].instances[0]


route53_conn = boto.connect_route53(key, secret)
zone = route53_conn.get_zone(domain_name)
record = zone.get_cname(instance_id + "." + domain_name)
if record is not None:
  zone.delete_cname(instance_id + "." + domain_name)
zone.add_cname(instance_id + "." + domain_name, instance.public_dns_name)

以下の処理で自身のinstance IDを取得できる。

document = boto.utils.get_instance_identity()["document"]
region = document["region"]
instance_id = document["instanceId"]

以下のようにして削除する前に存在するか確認する必要がある。

record = zone.get_cname(instance_id + "." + domain_name)
if record is not None:
  zone.delete_cname(instance_id + "." + domain_name)

以下のようにしてCNAMEを追加する。

zone.add_cname(instance_id + "." + domain_name, instance.public_dns_name)

参考