cloudflare sdk를 사용해서 Domain host record 갱신하기 - golang

cloudflare golang SDK를 사용해서 domain 레코드를 갱신하는 방법을 아래와 같이 사용하면된다.

 

package main

import (
	"context"
	"fmt"
	"log"
	"github.com/cloudflare/cloudflare-go"
)

func main() {
	domain = "encicle.com"
	domainRecord = "test.encicle.com"
	updateDomainData = "10.10.10.10"
	
	#업데이트할 도메인 레코드에 입력하기 위한 변수설정
	var updateADomainRecord cloudflare.UpdateDNSRecordParams

	// cloudflare 계정에서 API키를 생성한다.
	api, err := cloudflare.New("cloudflare_api_key", "cloudflare_account_email")
	if err != nil {
		log.Fatal(err)
	}

	# cloudflare에서는 domain zone의 ID를 통해 접근하기 때문에 우선적으로 zoneID를 api키를 통해 확인한다. 
	zoneID, err := api.ZoneIDByName(domain)
	if err != nil {
		log.Fatal(err)
	}
	
	# 획득한 zoneID를 통해서 모든 도메인 레코드를 받는다. 이유는 업데이트할 도메인 레코드를 수정하려면
	# 변경한 도메인 레코드의 ID를 알아야한다.
	listdomainRecord, _, err := api.ListDNSRecords(context.Background(), cloudflare.ZoneIdentifier(zoneID), cloudflare.ListDNSRecordsParams{})
	if err != nil {
		log.Fatal(err)
	}

	for _, r := range listdomainRecord {
		# 변경해야할 도메인을 찾아서 이미 설정된 도메인 레코드 정보를 "UpdateDNSRecordParams"정보로 할당한다.
		if r.Name == domainRecord && r.Type == "A" {
			updateADomainRecord.Type = r.Type
			updateADomainRecord.Name = r.Name
			updateADomainRecord.Content = r.Content
			updateADomainRecord.Data = r.Data
			updateADomainRecord.ID = r.ID
			updateADomainRecord.Priority = r.Priority
			updateADomainRecord.TTL = r.TTL
			updateADomainRecord.Proxied = r.Proxied
			updateADomainRecord.Comment = r.Comment
			updateADomainRecord.Tags = r.Tags
		}
	}
	
	# 입력된 updateADomainRecord 정보에서 수정할 데이터(레코드 정보를 교체)
	updateADomainRecord.Content = updateDomainData
	recs2 := api.UpdateDNSRecord(context.Background(), cloudflare.ZoneIdentifier(zoneID), updateADomainRecord)
	if recs2 != nil {
			fmt.Println("Failed Update")
	}
}