레코드 관리

Google Cloud DNS API의 DNS 레코드를 관리하려면 API로 change 요청을 전송해야 합니다. 이러한 변경사항은 리소스 레코드 집합 컬렉션의 삭제 및 추가 항목으로 구성됩니다. 아래 설명과 같이 import, export, transaction 명령어를 사용하면 원하는 변경사항을 간편하게 API에 전송할 수 있습니다.

시작하기 전에

관리형 영역을 만들고 해당 작업의 필수 조건을 완료해야 합니다.

아래의 모든 gcloud 명령줄 예에서 명령어에 --project 매개변수를 지정하면 해당 실행에 대한 다른 프로젝트에서 작동할 수 있습니다.

레코드 집합 가져오기 및 내보내기

importexport를 사용하면 레코드 집합을 관리형 영역 안팎에 복사할 수 있습니다. 가져오거나 내보낼 수 있는 형식은 BIND 영역 파일 형식 또는 YAML 레코드 형식입니다.

레코드 집합을 가져오려면 dns record-sets import 명령어를 사용합니다. --zone-file-format 플래그는 import가 BIND 영역 형식의 파일을 받아들이도록 지시합니다. 이 플래그를 생략하면 import가 YAML 형식의 레코드 파일을 받아들입니다.

gcloud dns record-sets import -z=examplezonename \
   --zone-file-format path-to-example-zone-file

레코드 집합을 내보내려면 dns record-sets export 명령어를 사용합니다. --zone-file-format 플래그를 사용하면 export가 레코드 집합을 BIND 영역 형식의 파일로 내보낼 수 있습니다. 이 플래그를 생략하면 export가 레코드 집합을 YAML 형식의 레코드 파일로 보냅니다.

gcloud dns record-sets export example.zone -z=examplezonename \
   --zone-file-format
   

트랜잭션을 사용하여 레코드 집합에 레코드 추가 또는 삭제

수행할 작업을 지정하는 트랜잭션을 만들고 실행하여 레코드 집합에 DNS 레코드를 추가하거나 삭제할 수 있습니다. 트랜잭션은 함께 전파되어야 하는 하나 이상의 레코드 변경사항 그룹입니다. 전체 트랜잭션이 성공하거나 실패하므로, 데이터가 중간 상태로 남지 않습니다.

트랜잭션을 사용하여 레코드 집합에 DNS 레코드를 추가하거나 삭제하려면 다음 단계를 따르세요.

  1. start 명령어를 실행하여 트랜잭션을 시작합니다.

    gcloud dns record-sets transaction start -z=examplezonename

    start 명령어를 실행할 때마다 Cloud DNS는 transaction.yaml이라는 YAML 형식의 로컬 파일을 만듭니다.

  2. 트랜잭션 명령어를 실행하여 DNS 레코드를 추가 또는 삭제합니다.

    add 명령어는 A 레코드 추가를 트랜잭션에 추가합니다. 예를 들면 다음과 같습니다.

    gcloud dns record-sets transaction add -z=examplezonename \
       --name="www.example.com." \
       --type=A \
       --ttl=300 "7.5.7.8"

    remove 명령어는 레코드 집합 삭제를 트랜잭션에 추가합니다. 예를 들면 다음과 같습니다.

    gcloud dns record-sets transaction remove -z=examplezonename \
        --name="mail.example.com." \
        --type=A \
       --ttl=300 "7.5.9.99"

    기존 레코드를 바꾸려면 remove 명령어 다음에 add 명령어를 실행합니다. 예를 들면 다음과 같습니다.

    gcloud dns record-sets transaction add -z=examplezonename \
       --name="mail.example.com." \
       --type=A \
       --ttl=300 "7.5.9.199"

    트랜잭션 명령어를 실행하면 transaction.yaml 파일에 추가됩니다.

  3. 트랜잭션 명령어 실행을 끝냈으면 execute 명령어를 실행하여 트랜잭션을 실행합니다. 예를 들면 다음과 같습니다.

    gcloud dns record-sets transaction execute -z=examplezonename

    트랜잭션을 실행 또는 취소하면 transaction.yaml 파일이 삭제됩니다.

현재 레코드 집합 표시

영역의 현재 DNS 레코드를 표시하려면 다음과 같이 하세요.

명령줄

gcloud dns record-sets list --zone="myzonename"
이 명령어는 처음 100개 레코드의 리소스 레코드 집합에 대한 JSON 응답을 출력합니다. 다음과 같은 추가 매개변수를 지정할 수 있습니다.
  • limit: 나열할 최대 레코드 집합 수입니다.
  • name: 이 정확한 도메인 이름을 가진 레코드 집합만 나열합니다.
  • type: 이 유형의 레코드만 나열합니다. 있는 경우, --name 매개변수도 있어야 합니다.

Python

def list_resource_records(project_id, zone_name):
    client = dns.Client(project=project_id)
    zone = client.zone(zone_name)

    records = zone.list_resource_record_sets()

    return [(record.name, record.record_type, record.ttl, record.rrdatas)
            for record in records]

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Cloud DNS 문서