Route 53 프라이빗 호스팅 영역(PHZ)을 다른 AWS 계정의 VPC 또는 리전에 연결하기 위해서 사용한다. 콘솔에서는 association 작업을 할 수 없고 CLI에서만 가능하다.
계정 A 에서 test.com이란 이름으로 private hosted zone을 생성한다.
계정 A 의 VPC 와 연결한다.
테스트를 위해 레코드 생성한다. (www.test.com)
계정 A EC2를 생성한 후 계정 A의 EC2에서 nslookup을 통해 Private Hosted Zone의 레코드를 조회하면 생성해둔 www.test.com의 도메인 IP가 잘 뜨는 것을 확인할 수 있다.
계정 B에서도 EC2를 생성한 후, nslookup 명령어를 통해 레코드를 조회해보면 다른 결과가 나오는 것을 확인할 수 있다.
Cross account Private Hosted Zone association 전 Hosted Zone ID를 확인한다.
association 작업을 할 계정 B의 VPC ID를 확인한다.
$ aws route53 create-vpc-association-authorization --hosted-zone-id <연결 hosted-zone-id> --vpc VPCRegion=<연결 region>,VPCId=<연결 vpc-id>
AWS CLI 를 사용하여 계정 A 에서 인증 요청을 진행한다.
$ aws route53 associate-vpc-with-hosted-zone --hosted-zone-id <연결할 hosted-zone-id> --vpc VPCRegion=<연결 region>,VPCId=<연결 vpc-id>
동일하게 CLI 를 통해 계정 B 에서 연결을 진행한다.
계정 A의 Route53에서 Private Hosted Zone를 확인하면 계정 B의 VPC가 추가된 것을 확인할 수 있다.
VPC가 추가 되었기 때문에 계정 B에서 다시 한 번 nslookup을 통해 레코드를 조회해보면 계정 A의 Route53 레코드 도메인 IP가 잘 뜨는 것을 확인할 수 있다.
$ aws route53 delete-vpc-association-authorization --hosted-zone-id <연결hosted-zone-id> --vpc VPCRegion=<연결 region>,VPCId=<연결 vpc-id>
연결이 생성된 후 연결 권한 부여를 삭제하는 것이 가장 좋다. 연결 권한 부여를 삭제해두면 나중에 동일한 연결이 다시 생성되지 않기 때문이다. 따라서 계정 A에서 인증 요청 제거를 진행한다.
$ aws route53 disassociate-vpc-from-hosted-zone --hosted-zone-id <연결 hosted-zone-id> --vpc VPCRegion=<연결 region>,VPCId=<연결 vpc-id>
Route 53 프라이빗 호스팅 영역을 다른 AWS 계정의 VPC에서 사용하지 않는다면 association 연결을 제거한다. 계정 A 또는 B에서 연결 삭제를 진행한다.
계정 A의 Route53에서 Private Hosted Zone를 확인하면 계정 B의 VPC가 제거된 것을 확인할 수 있다.
계정 B에서 nslookup으로 조회해보면 다시 Private Hosted Zone의 레코드가 보이지 않는 것을 알 수 있다.