cloud9 을 사용하거나,, 뭐 여튼 필요할떄만 쓰는 aws 인스턴스의 경우엔 ip 주소를 매번 확인해줘야하는 번거로움이 추가된다.
따라서 부팅시에 Route 53 A레코드를 변경해주는 스크립트를 작성해보았음.
IAM 권한도 적절히 필요하겠지만, 난 cloud9 instance를 사용해서인지, aws가 알아서 credential 을 관리해줘서 생략.
필요하다면 아래 참고 글 링크를 확인해보자.
아래 파이썬 스크립트를 적절한 곳에 만들어 주고, 상단 변수 역시 설정해준다. 난 ~/route53/update.py 라고 만들었음.
특정 인스턴스의 public ip 를 구해온 다음, 지정한 url의 A레코드 값을 변경(없으면 생성)해주는 코드이다.
호스팅 영역 ID는 Route 53 에서 해당 도메인 이름(ex.com)을 선택하면 볼 수 있고, URL 은 호스팅 영역 내에서 생성하는 서브도메인을 포함한 이름(abc.ex.com)의 형태를 입력해주자.
INSTANCE_REGION="ap-southeast-1"
INSTANCE_ID="i-~~~~~~~~~~"
DOMAIN_ZONE="호스팅 영역 ID (ZGWP~~~~~~)"
URL="사용할 도메인 (abc.ex.com)"
import boto3
client_ec2 = boto3.client('ec2', region_name=INSTANCE_REGION)
r = client_ec2.describe_instances(InstanceIds=[INSTANCE_ID])
ip = r['Reservations'][0]['Instances'][0]['PublicIpAddress']
client_route53 = boto3.client('route53')
client_route53.change_resource_record_sets(
HostedZoneId=DOMAIN_ZONE,
ChangeBatch={'Changes': [{
'Action': 'UPSERT',
'ResourceRecordSet': {
'Name': URL,
'Type': 'A',
'TTL': 300,
'ResourceRecords': [{'Value': ip}]
}
}]}
)
그 다음 이 스크립트를 부팅시 실행되도록 설정한다. 여러가지 방법이 있지만 난 crontab을 이용하였음.
crontab -e
@reboot sleep 30 && /usr/bin/python3 /home/ec2-user/route53/update.py
경로 등은 알아서 수정해주자.
난 혹시 몰라서 30초 딜레이를 줬는데 안줘도 될 수도.
1번 테스트 해봤는데 일단 잘 된다. ㅎㅎ
'Linux, Server, Web' 카테고리의 다른 글
Ubuntu 18.04 + NextCloud 설치 (0) | 2020.08.17 |
---|---|
OpenSSL X.509 인증서 정리 (HTTPS, TLS) (0) | 2019.12.19 |
AWS Lambda Python 패키지 포함하기 + 배포 스크립트 (0) | 2019.07.17 |
OpenSSL 로 OpenVPN 용 인증서 생성하기 (0) | 2019.03.08 |
[OpenVPN] ID / PW 로 인증하기 (1) | 2019.03.06 |