[go] Go 언어를 사용하여 AWS Route 53으로 도메인 관리하기

AWS Route 53은 Amazon Web Services의 호스팅 및 DNS 서비스로, 도메인 이름 관리를 쉽게 할 수 있습니다. 이제 Go 언어를 사용하여 AWS SDK를 통해 Route 53을 효과적으로 관리하는 방법을 알아보겠습니다.

전제 조건

SDK 설치 및 환경 설정

먼저, Go 언어에서 AWS SDK를 사용하기 위해 SDK를 설치하고 환경을 설정해야 합니다. 아래는 AWS SDK for Go를 설치하는 명령어입니다.

go get -u github.com/aws/aws-sdk-go

SDK를 설치하면, AWS 인증 정보를 설정해야 합니다. 환경 변수 또는 공유 자격 증명 파일을 통해 AWS 클라이언트를 만들 수 있습니다.

sess, err := session.NewSession(&aws.Config{
    Region: aws.String("ap-northeast-2")},
)

svc := route53.New(sess)

도메인 레코드 생성

이제 Route 53을 사용하여 도메인 레코드를 생성할 수 있습니다. 아래는 CNAME 레코드를 생성하는 예제입니다.

input := &route53.ChangeResourceRecordSetsInput{
    ChangeBatch: &route53.ChangeBatch{
        Changes: []*route53.Change{
            {
                Action: aws.String("CREATE"),
                ResourceRecordSet: &route53.ResourceRecordSet{
                    Name: aws.String("subdomain.example.com"),
                    Type: aws.String("CNAME"),
                    TTL: aws.Int64(300),
                    ResourceRecords: []*route53.ResourceRecord{
                        {
                            Value: aws.String("example.com"),
                        },
                    },
                },
            },
        },
    },
    HostedZoneId: aws.String("HOSTED_ZONE_ID"),
}

result, err := svc.ChangeResourceRecordSets(input)

도메인 레코드 삭제

기존에 존재하는 도메인 레코드를 삭제할 수도 있습니다. 아래는 위에서 생성한 CNAME 레코드를 삭제하는 예제입니다.

input := &route53.ChangeResourceRecordSetsInput{
    ChangeBatch: &route53.ChangeBatch{
        Changes: []*route53.Change{
            {
                Action: aws.String("DELETE"),
                ResourceRecordSet: &route53.ResourceRecordSet{
                    Name: aws.String("subdomain.example.com"),
                    Type: aws.String("CNAME"),
                    TTL: aws.Int64(300),
                    ResourceRecords: []*route53.ResourceRecord{
                        {
                            Value: aws.String("example.com"),
                        },
                    },
                },
            },
        },
    },
    HostedZoneId: aws.String("HOSTED_ZONE_ID"),
}

result, err = svc.ChangeResourceRecordSets(input)

마무리

이제 Go 언어를 사용하여 AWS Route 53을 통해 도메인 관리 및 레코드 조작을 하는 방법을 알게 되었습니다. 필요에 따라 다양한 레코드 유형과 작업을 수행할 수 있으며, 자신의 도메인을 프로그래밍 방식으로 유연하게 관리할 수 있습니다.