以下のスクリプトをサーバー起動時に実行する事でホスト名を固定する事ができる。
#!/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)