엔드포인트를 통해 Google API 액세스

이 문서에서는 Private Service Connect 엔드포인트를 사용하여 Google API에 연결하는 방법을 설명합니다. 서비스 엔드포인트(예: storage.googleapis.com)의 공개적으로 사용 가능한 IP 주소로 API 요청을 보내는 대신 엔드포인트의 내부 IP 주소로 요청을 보낼 수 있습니다.

Private Service Connect를 사용하여 다른 VPC 네트워크의 서비스에 액세스하고 서비스를 게시할 수도 있습니다.

역할

다음 IAM 역할은 이 가이드의 작업을 수행하는 데 필요한 권한을 제공합니다.

작업 역할
엔드포인트 만들기 다음 역할 모두:
Compute 네트워크 관리자 (roles/compute.networkAdmin),
서비스 디렉터리 편집자 (roles/servicedirectory.editor) 및
DNS 관리자 (roles/dns.admin)
비공개 Google 액세스 구성(선택사항) Compute 네트워크 관리자(roles/compute.networkAdmin)

시작하기 전에

  • DNS 구성 및 제한사항을 포함한 자세한 내용은 엔드포인트를 사용하여 Google API에 연결하는 방법을 참조하세요.

  • Private Service Connect에서는 API가 자동으로 사용 설정되지 않습니다. Google Cloud Console의 API 및 서비스 페이지에서 사용해야 하는 Google API를 별도로 사용 설정해야 합니다.

  • 프로젝트에서 Compute Engine API사용 설정해야 합니다.

  • 프로젝트에서 서비스 디렉터리 API사용 설정해야 합니다.

  • 프로젝트에서 Cloud DNS API사용 설정해야 합니다.

  • 엔드포인트에 사용할 IP 주소를 선택해야 합니다. 사용 가능한 IP 주소에 대한 자세한 내용은 IP 주소 요구사항을 참조하세요.

  • 이그레스 방화벽 규칙은 엔드포인트로 트래픽을 허용해야 합니다. VPC 네트워크의 기본 방화벽 구성은 묵시적 이그레스 허용 규칙이 포함되어 있으므로 이 트래픽을 허용합니다. 트래픽을 차단하는 우선순위가 더 높은 이그레스 규칙을 만들지 않았는지 확인합니다.

  • 외부 IP 주소가 할당되지 않은 가상 머신(VM) 인스턴스는 엔드포인트를 사용하여 Google API 및 서비스에 액세스하려면 비공개 Google 액세스가 사용 설정된 서브넷을 사용해야 합니다.

    외부 IP 주소가 있는 VM은 서브넷에 비공개 Google 액세스가 사용 중지된 경우에도 엔드포인트를 사용하여 Google API 및 서비스에 액세스할 수 있습니다. 엔드포인트에 대한 연결은 Google 네트워크 내로 유지됩니다.

  • VPC 네트워크에 엔드포인트가 없으면 p.googleapis.com의 Cloud DNS 비공개 영역이 있는지 확인합니다. 영역이 있으면 엔드포인트를 만들기 전에 영역을 삭제합니다. 영역을 삭제하지 않으면 Private Service Connect에 사용되는 서비스 디렉터리 DNS 영역 생성이 실패합니다. 자세한 내용은 문제 해결을 참조하세요.

  • 피어링된 VPC 네트워크에서 엔드포인트에 액세스할 수 없습니다.

서브넷에 비공개 Google 액세스 사용 설정

외부 IP 주소가 할당되지 않은 VM은 엔드포인트를 사용하여 Google API 및 서비스에 액세스하려면 비공개 Google 액세스가 사용 설정된 서브넷에 연결되어야 합니다.

VM에 둘 이상의 인터페이스가 있으면 기본 경로(일반적으로 nic0)로 구성된 인터페이스를 연결합니다.

VM에서 전송된 패킷의 소스 IP 주소는 VM 인터페이스의 기본 내부 IPv4 주소 또는 별칭 IP 범위의 내부 IPv4 주소와 일치해야 합니다.

서브넷에 비공개 Google 액세스를 사용 설정하려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 비공개 Google 액세스를 사용 설정해야 하는 서브넷이 포함된 네트워크의 이름을 클릭합니다.

  3. 서브넷 이름을 클릭합니다. 서브넷 세부정보 페이지가 표시됩니다.

  4. 수정을 클릭합니다.

  5. 비공개 Google 액세스 섹션에서 사용을 선택합니다.

  6. 저장을 클릭합니다.

gcloud

  1. 서브넷의 이름과 리전을 확인합니다. 특정 네트워크의 서브넷을 나열하려면 다음 명령어를 사용합니다.

    gcloud compute networks subnets list --filter=NETWORK_NAME
    
  2. 다음 명령어를 실행하여 비공개 Google 액세스를 사용 설정합니다.

    gcloud compute networks subnets update SUBNET_NAME \
    --region=REGION \
    --enable-private-ip-google-access
    
  3. 다음 명령어를 실행하여 비공개 Google 액세스가 사용 설정되었는지 확인합니다.

    gcloud compute networks subnets describe SUBNET_NAME \
    --region=REGION \
    --format="get(privateIpGoogleAccess)"
    

다음을 바꿉니다.

  • SUBNET_NAME: 서브넷의 이름
  • REGION: 서브넷의 리전
  • NETWORK_NAME: 서브넷이 포함된 VPC 네트워크의 이름

Terraform

Terraform 리소스를 사용하여 서브넷에 비공개 Google 액세스를 사용 설정할 수 있습니다.

resource "google_compute_network" "network" {
  project                 = var.project # Replace this with your project ID in quotes
  name                    = "tf-test"
  auto_create_subnetworks = false
}

resource "google_compute_subnetwork" "vpc_subnetwork" {
  project                  = google_compute_network.network.project
  name                     = "test-subnetwork"
  ip_cidr_range            = "10.2.0.0/16"
  region                   = "us-central1"
  network                  = google_compute_network.network.id
  private_ip_google_access = true
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

엔드포인트 만들기

요구사항을 충족하는 IP 주소를 선택한 후 엔드포인트를 만들 수 있습니다.

엔드포인트는 전역 전달 규칙을 사용하여 Google API 및 서비스에 연결합니다. 각 전달 규칙은 Private Service Connect의 VPC 네트워크 할당량별로 반영됩니다.

Google API 및 서비스에 대한 엔드포인트를 만든 후에는 업데이트할 수 없습니다. Google API 및 서비스의 엔드포인트를 업데이트해야 하는 경우 엔드포인트를 삭제한 후 새 엔드포인트를 만듭니다.

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결된 엔드포인트 탭을 클릭합니다.

  3. 엔드포인트 연결을 클릭합니다.

  4. 대상으로 사용할 대상 API 번들을 선택합니다.

    • 모든 Google API
    • VPC-SC
  5. 연결 이름에 엔드포인트 이름을 입력합니다.

  6. 엔드포인트의 네트워크를 선택합니다.

  7. 엔드포인트의 IP 주소를 선택합니다.

    IP 주소는 이러한 요구사항을 충족해야 합니다.

    새 IP 주소가 필요한 경우 IP 주소를 만들 수 있습니다.

    1. IP 주소 만들기를 클릭합니다.
    2. IP 주소의 이름설명을 입력합니다.
    3. 사용할 IP 주소를 입력하고 저장을 클릭합니다.
  8. 이 VPC 네트워크에 서비스 디렉터리 리전이 아직 구성되어 있지 않으면 사용할 리전을 선택합니다.

    특정 VPC 네트워크에서 Google API 및 서비스에 액세스하는 데 사용되는 모든 엔드포인트는 동일한 서비스 디렉터리 리전을 사용합니다.

  9. 이 VPC 네트워크에 서비스 디렉터리 네임스페이스가 아직 구성되어 있지 않으면 사용할 네임스페이스를 구성합니다.

    • 자동 할당된 네임스페이스를 사용하려면 네임스페이스 드롭다운 메뉴를 클릭하고 자동 할당된 네임스페이스를 선택합니다.

    • 다른 네트워크에서 사용되는 기존 네임스페이스를 선택하려면 네임스페이스 드롭다운 메뉴를 클릭하고 목록에서 네임스페이스를 선택합니다. 목록에 프로젝트의 모든 네임스페이스가 표시됩니다. Google API에 액세스하는 데 사용되는 엔드포인트에만 사용되는 네임스페이스를 선택해야 합니다.

    • 새 네임스페이스를 만들려면 네임스페이스 드롭다운 메뉴를 클릭하고 네임스페이스 만들기를 클릭합니다. 네임스페이스를 입력하고 만들기를 클릭합니다.

    특정 VPC 네트워크의 Google API 및 서비스에 액세스하는 데 사용하는 모든 엔드포인트는 동일한 서비스 디렉터리 네임스페이스를 사용합니다.

  10. 엔드포인트 추가를 클릭합니다.

gcloud

  1. 엔드포인트에 할당할 전역 내부 IP 주소를 예약합니다.

    gcloud compute addresses create ADDRESS_NAME \
      --global \
      --purpose=PRIVATE_SERVICE_CONNECT \
      --addresses=ENDPOINT_IP \
      --network=NETWORK_NAME
    

    다음을 바꿉니다.

    • ADDRESS_NAME: 예약된 IP 주소에 할당할 이름입니다.

    • ENDPOINT_IP: 엔드포인트에 예약할 IP 주소입니다.

      IP 주소는 이러한 요구사항을 충족해야 합니다.

    • NETWORK_NAME: 엔드포인트의 VPC 네트워크 이름입니다.

  2. 엔드포인트를 Google API 및 서비스에 연결하는 전달 규칙을 만듭니다.

    gcloud compute forwarding-rules create ENDPOINT_NAME \
      --global \
      --network=NETWORK_NAME \
      --address=ADDRESS_NAME \
      --target-google-apis-bundle=API_BUNDLE \
      [ --service-directory-registration=REGION_NAMESPACE_URI ]
    

    다음을 바꿉니다.

    • ENDPOINT_NAME: 엔드포인트에 할당할 이름입니다. 이름은 소문자와 숫자만 포함하는 1~20자(영문 기준)의 문자열이어야 합니다. 이름은 문자로 시작해야 합니다.

    • NETWORK_NAME: 엔드포인트의 VPC 네트워크 이름입니다.

    • ADDRESS_NAME: 연결된 네트워크에 예약된 주소의 이름입니다.

    • API_BUNDLE: 엔드포인트를 사용하여 제공할 API 번들입니다. 지원되는 API 목록을 참조하세요.

      • all-apis를 사용하여 지원되는 모든 API에 대한 액세스 권한을 부여합니다.

      • vpc-sc를 사용하여 VPC 서비스 제어를 지원하는 Google API에 대한 액세스를 제한합니다.

    • REGION_NAMESPACE_URI: 사용할 서비스 디렉터리 리전 또는 네임스페이스의 URI입니다. 이 URI는 엔드포인트를 만드는 프로젝트와 동일한 프로젝트를 참조해야 합니다.

      • projects/PROJECT_NAME/locations/REGION으로만 리전을 정의할 수 있습니다.

      • projects/PROJECT_NAME/locations/REGION/namespaces/NAMESPACE를 사용하여 리전과 네임스페이스를 정의할 수 있습니다.

      --service-directory-registration을 완전히 생략하거나 네임스페이스 없이 리전을 설정하면 다음과 같은 결과가 발생합니다.

      • 이 VPC 네트워크에 리전 또는 네임스페이스가 이미 구성되어 있으면 해당 기본값이 사용됩니다.

      • 리전이 구성되지 않은 경우 리전은 us-central1으로 설정됩니다. 네임스페이스가 구성되어 있지 않으면 시스템 생성 네임스페이스가 할당됩니다.

API

  1. 엔드포인트에 할당할 전역 내부 IP 주소를 예약합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
    
    {
    "name": ADDRESS_NAME,
    "address": ENDPOINT_IP,
    "addressType": "INTERNAL",
    "purpose": PRIVATE_SERVICE_CONNECT,
    "network": NETWORK_URL
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.

    • ADDRESS_NAME: 예약된 IP 주소에 할당할 이름입니다.

    • ENDPOINT_IP: 엔드포인트에 예약할 IP 주소입니다.

      IP 주소는 이러한 요구사항을 충족해야 합니다.

    • NETWORK_URL: 엔드포인트의 VPC 네트워크입니다. network.list 메서드 또는 gcloud compute networks list --uri를 사용하여 네트워크의 URL을 찾습니다.

  2. 엔드포인트를 Google API 및 서비스에 연결하는 전달 규칙을 만듭니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules
    {
     "IPAddress": ADDRESS_URL,
     "network": NETWORK_URL,
     "name": ENDPOINT_NAME,
     "target": API_BUNDLE,
     "serviceDirectoryRegistrations : [
       {
         "service_directory_region": REGION,
         "namespace": "NAMESPACE"
    
       }
     ],
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.

    • ENDPOINT_NAME: 엔드포인트에 할당할 이름입니다. 이름은 소문자와 숫자만 포함하는 1~20자(영문 기준)의 문자열이어야 합니다. 이름은 문자로 시작해야 합니다.

    • NETWORK_URL: 엔드포인트의 VPC 네트워크입니다. network.list 메서드 또는 gcloud compute networks list --uri를 사용하여 네트워크의 URL을 찾습니다.

    • ADDRESS_URL: 연결된 네트워크에 예약된 주소의 URL입니다. globalAddresses.list 메서드 또는 gcloud compute addresses list --uri를 사용하여 예약된 주소의 URL을 찾습니다.

    • API_BUNDLE: 엔드포인트를 사용하여 제공할 API 번들입니다. 지원되는 API 목록을 참조하세요.

      • all-apis를 사용하여 지원되는 모든 API에 대한 액세스 권한을 부여합니다.

      • vpc-sc를 사용하여 VPC 서비스 제어를 지원하는 Google API에 대한 액세스를 제한합니다.

    • REGION: 사용할 서비스 디렉터리 리전입니다. 예를 들면 us-central1입니다. REGION을 생략한 경우 이 VPC 네트워크에 이미 구성된 리전이 사용됩니다. 리전이 구성되지 않은 경우 리전은 us-central1으로 설정됩니다.

    • NAMESPACE: 사용할 서비스 디렉터리 네임스페이스의 이름입니다. NAMESPACE를 생략한 경우 이 VPC 네트워크에 이미 구성된 네임스페이스가 사용됩니다. 네임스페이스가 구성되어 있지 않으면 시스템 생성 네임스페이스가 할당됩니다.

Terraform

다음 Terraform 리소스를 사용하여 엔드포인트를 만들 수 있습니다.

resource "google_compute_global_address" "default" {
  project      = google_compute_network.network.project
  name         = "global-psconnect-ip"
  address_type = "INTERNAL"
  purpose      = "PRIVATE_SERVICE_CONNECT"
  network      = google_compute_network.network.id
  address      = "10.3.0.5"
}
resource "google_compute_global_forwarding_rule" "default" {
  project               = google_compute_network.network.project
  name                  = "globalrule"
  target                = "all-apis"
  network               = google_compute_network.network.id
  ip_address            = google_compute_global_address.default.id
  load_balancing_scheme = ""
}

엔드포인트가 작동하는지 확인

Private Service Connect가 구성된 VPC 네트워크에 VM 인스턴스를 만듭니다. VM에서 다음 명령어를 실행하여 Private Service Connect 엔드포인트가 작동하는지 확인합니다. 엔드포인트는 핑(ICMP) 요청에 응답하지 않습니다.

curl -v ENDPOINT_IP/generate_204

ENDPOINT_IP를 엔드포인트의 IP 주소로 바꿉니다.

엔드포인트가 작동하는 경우 HTTP 204 응답 코드가 표시됩니다.

엔드포인트 나열

구성된 모든 엔드포인트를 나열할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결된 엔드포인트 탭을 클릭합니다.

    엔드포인트가 표시됩니다.

gcloud

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

출력은 다음과 비슷합니다.

NAME  REGION  IP_ADDRESS  IP_PROTOCOL  TARGET
RULE          IP          TCP          all-apis

엔드포인트에 대한 정보 가져오기

엔드포인트의 모든 구성 세부정보를 볼 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결된 엔드포인트 탭을 클릭합니다.

    엔드포인트가 표시됩니다.

  3. 세부정보를 보려는 엔드포인트를 클릭합니다.

gcloud

gcloud compute forwarding-rules describe \
    ENDPOINT_NAME --global

엔드포인트 라벨 지정

엔드포인트 라벨을 관리할 수 있습니다. 자세한 내용은 리소스 라벨 지정을 참조하세요.

엔드포인트 삭제

엔드포인트를 삭제할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결된 엔드포인트 탭을 클릭합니다.

  3. 삭제할 엔드포인트를 선택하고 삭제를 클릭합니다.

gcloud

    gcloud compute forwarding-rules delete \
        ENDPOINT_NAME --global

ENDPOINT_NAME을 삭제할 엔드포인트의 이름으로 바꿉니다.

엔드포인트 사용

엔드포인트를 사용하려면 엔드포인트의 IP 주소로 확인되는 DNS 호스트 이름에 요청을 전송합니다.

  • 커스텀 엔드포인트를 사용하도록 클라이언트를 구성하고 p.googleapis.com DNS 레코드가 사용하려는 API 및 서비스에 대해 생성된 경우 자동으로 생성된 p.googleapis.com DNS 이름을 사용할 수 있습니다. 자세한 내용은 p.googleapis.com DNS 이름 사용을 참조하세요.

    예를 들어 엔드포인트 이름이 xyz이면 DNS 레코드가 storage-xyz.p.googleapis.com, compute-xyz.p.googleapis.com, API 번들에서 다른 일반적으로 사용되는 API에 대해 생성됩니다.

  • 커스텀 엔드포인트를 사용하도록 구성되지 않은 클라이언트를 사용하거나 사용하려는 서비스에 대해 p.googleapis.com DNS 레코드가 존재하지 않는 경우 기본 DNS 이름을 사용하여 DNS 레코드를 만들 수 있습니다. 자세한 내용은 기본 DNS 이름을 사용하여 DNS 레코드 만들기를 참조하세요.

    예를 들어 storage.googleapis.comcompute.googleapis.com에 대해 DNS 레코드를 만듭니다.

p.googleapis.com DNS 이름 사용

엔드포인트를 만들 때 서비스 디렉터리가 엔드포인트를 사용하여 제공되는 일반적으로 사용되는 API 및 서비스에 대한 DNS 레코드를 만듭니다. DNS 레코드는 기본 DNS 이름이 googleapis.com으로 끝나는 API 및 서비스와 해당 API 및 서비스의 하위 집합에 대해서만 생성됩니다.

DNS 레코드는 p.googleapis.com 비공개 영역에 생성됩니다. 레코드는 엔드포인트 IP 주소를 나타내며, SERVICE-ENDPOINT.p.googleapis.com 형식을 사용합니다.

예를 들어 엔드포인트 이름이 xyz이면 storage-xyz.p.googleapis.com, compute-xyz.p.googleapis.com, 기타 지원되는 API에 대한 DNS 레코드가 생성됩니다.

커스텀 엔드포인트를 사용하도록 구성될 수 있는 클라이언트는 p.googleapis.com DNS 이름을 사용하여 엔드포인트로 요청을 전송할 수 있습니다.

커스텀 엔드포인트를 사용하도록 구성하는 방법은 클라이언트 또는 클라이언트 라이브러리 문서를 참조하세요. 예를 들면 다음과 같습니다.

  • Python: 클라이언트 옵션에서 api_endpoint를 구성할 수 있습니다.

  • Go: ClientOptions에서 WithEndpoint를 구성할 수 있습니다.

  • .NET: 클라이언트의 빌더 클래스에서 Endpoint를 구성할 수 있습니다.

  • gcloud: gcloud CLI에서 api_endpoint_overrides를 구성할 수 있습니다.

기본 DNS 이름을 사용하여 DNS 레코드 만들기

API 및 서비스에 대한 기본 DNS 이름을 해당 환경의 엔드포인트에 연결하도록 DNS 레코드를 만들어야 합니다.

  • p.googleapis.com DNS 이름을 사용하도록 클라이언트 또는 애플리케이션을 구성할 수 없습니다.

  • 지원되는 서비스에 액세스해야 하지만 해당 서비스에 대해 자동으로 생성된 p.googleapis.com DNS 이름이 없습니다.

Private Service Connect 엔드포인트를 가리키는 DNS 레코드를 만들려면 다음 안내를 따르세요.

  1. 사용해야 하는 도메인의 DNS 영역을 만듭니다(예: googleapis.com 또는 gcr.io). 이 경우에는 Cloud DNS 비공개 영역 만들기를 참조하세요.

  2. 이 DNS 영역에서 다음을 수행합니다.

    1. 도메인(영역) 이름 자체에 대한 A 레코드를 만듭니다. 예를 들면 googleapis.com 또는 gcr.io입니다. 이 A 레코드가 엔드포인트의 IP 주소를 가리키도록 합니다. Cloud DNS를 사용할 경우 레코드 추가를 참조하세요.

    2. 별표와 점, 도메인(영역) 이름을 차례로 사용하여 추가 도메인의 가능한 모든 호스트 이름에 대한 CNAME 레코드를 만듭니다(예: *.googleapis.com 또는 *.gcr.io). 이 CNAME 레코드가 동일한 영역의 A 레코드를 가리키도록 합니다. 예를 들어 *.googleapis.comgoogleapis.com을 가리키도록 하거나 *.gcr.iogcr.io를 가리키도록 합니다.

온프레미스 호스트에서 엔드포인트에 액세스

온프레미스 네트워크가 VPC 네트워크에 연결되어 있으면 Private Service Connect를 통해 엔드포인트의 내부 IP 주소를 사용하여 온프레미스 호스트에서 Google API 및 서비스에 액세스할 수 있습니다.

  • Cloud VPN 터널이나 VLAN 연결을 사용하여 온프레미스 네트워크를 VPC 네트워크에 연결해야 합니다.

  • 엔드포인트는 온프레미스 네트워크에 연결된 VPC 네트워크에 있습니다.

  • 온프레미스 네트워크에는 엔드포인트에 대한 적절한 경로가 있어야 합니다. Cloud VPN 터널 또는 VLAN 연결에 대한 경로를 관리하는 BGP 세션에서 엔드포인트의 경로를 공지하도록 Cloud Router 커스텀 경로 공지를 구성합니다.

  • 온프레미스 시스템이 비공개 DNS 영역에 쿼리할 수 있도록 온프레미스 시스템을 구성해야 합니다.

    Cloud DNS를 사용하여 비공개 DNS 영역을 구현한 경우 다음 단계를 완료합니다.

    • 온프레미스 네트워크가 연결되는 VPC 네트워크에 인바운드 서버 정책을 만듭니다.

    • Cloud VPN 터널과 VLAN 연결이 있는 리전의 온프레미스 네트워크가 연결되는 VPC 네트워크에서 인바운드 전달자 진입점을 식별합니다.

    • VPC 네트워크에 연결되는 Cloud VPN 터널 또는 VLAN 연결과 동일한 리전에서 Private Service Connect 엔드포인트의 DNS 이름을 인바운드 전달자 진입점으로 전달하도록 온프레미스 시스템 및 온프레미스 DNS 네임서버를 구성합니다.

문제 해결

비공개 DNS 영역 만들기 실패

엔드포인트를 만들면 서비스 디렉터리 DNS 영역이 생성됩니다. 다음과 같은 이유로 영역 생성이 실패할 수 있습니다.

  • 프로젝트에서 Cloud DNS API를 사용 설정하지 않았습니다.

  • 서비스 디렉터리 DNS 영역을 만드는 데 필요한 권한이 없습니다.

  • 이 VPC 네트워크에 영역 이름이 동일한 DNS 영역이 있습니다.

  • 이 VPC 네트워크에 p.googleapis.com의 DNS 영역이 이미 있습니다.

이전 삭제 실패로 인해 충돌하는 영역이 있을 수 있습니다.

서비스 디렉터리 DNS 영역을 만들려면 다음 안내를 따르세요.

  1. Cloud DNS API가 프로젝트에 사용 설정되어 있는지 확인합니다.

  2. 서비스 디렉터리 DNS 영역을 만드는 데 필요한 권한이 있는지 확인합니다.

    • dns.managedZones.create
    • servicedirectory.namespaces.associatePrivateZone
  3. DNS 영역을 삭제합니다.

  4. 엔드포인트와 연결된 서비스 디렉터리 네임스페이스에서 지원하는 서비스 디렉터리 DNS 영역을 만듭니다.

    영역을 만들 때 다음 값을 사용합니다.

    • 영역 이름: 만들기 시도를 실패하는 동안 시스템에서 사용한 것과 동일한 영역 이름을 사용합니다. 오류 메시지에 사용된 영역 이름이 표시됩니다.

    • DNS 이름: p.googleapis.com.(후행 점 포함)

    • 서비스 디렉터리 네임스페이스: 생성된 Private Service Connect 엔드포인트의 서비스 디렉터리 네임스페이스를 찾고 서비스 디렉터리 DNS 영역을 만들 때 이 네임스페이스를 사용합니다.

    서비스 디렉터리 네임스페이스 형식은 다음과 같습니다. goog-psc-NETWORK_NAME-NETWORK_ID

비공개 DNS 영역 삭제 실패

VPC 네트워크에서 마지막 엔드포인트를 삭제하면 DNS 영역을 포함한 연결된 서비스 디렉터리 구성이 삭제됩니다.

이러한 삭제는 다음과 같은 이유로 실패할 수 있습니다.

  • DNS 영역을 삭제하는 데 필요한 권한이 없습니다.

  • 이 영역에 서비스 디렉터리에서 만들지 않은 사용자 정의 DNS 항목이 있습니다.

이 문제를 해결하려면 다음 단계를 따르세요.

  1. dns.managedZones.delete 권한이 있는지 확인합니다. 자세한 내용은 Cloud DNS 문서의 액세스 제어를 참조하세요.

  2. DNS 영역을 삭제합니다.