전송 구성 문제 해결

이 문서는 BigQuery Data Transfer Service 전송을 설정할 때 발생하는 가장 일반적인 문제를 해결하는 방법에 대해 설명합니다. 이 문서는 발생 가능한 오류 메시지나 문제를 모두 다루지는 않습니다.

이 문서에서 다루지 않은 문제가 발생하면 지원을 요청 하세요.

Cloud Customer Care에 문의하기 전에 전송 구성과 전송 실행 세부정보를 캡처합니다. 이러한 세부정보를 가져오는 방법은 전송 세부정보 가져오기전송 실행 세부정보 및 로그 메시지 보기를 참고하세요.

오류 검사

최초 전송 실행이 실패하면 실행 기록의 세부정보를 검토할 수 있습니다. 실행 기록에 나열된 오류를 참조하면 이 문서를 이용해 적절한 해결 방법을 쉽게 파악할 수 있습니다.

로그 탐색기를 사용하여 특정 전송 작업의 오류 메시지를 볼 수도 있습니다. 다음 로그 탐색기 필터는 특정 전송 구성 작업에 관한 정보와 오류 메시지를 반환합니다.

resource.type="bigquery_dts_config"
labels.run_id="RUN_ID"
resource.labels.config_id="CONFIG_ID"

다음을 바꿉니다.

  • RUN_ID: 특정 작업 실행의 ID 번호
  • CONFIG_ID: 전송 구성 작업의 ID 번호

고객 관리팀에 문의하기 전에 실행 기록 또는 Logs Explorer에서 오류 메시지를 포함한 관련 정보를 모두 캡처하세요.

이벤트 기반 전송을 사용하는 경우 이벤트 기반 전송 구성이 전송 실행을 트리거하지 못할 수 있습니다. 실행 기록 페이지 또는 구성 페이지 상단에서 오류 메시지를 확인할 수 있습니다.

일반적인 문제

일반적인 전송 문제를 진단할 때는 다음을 확인하세요.

  • 전송 유형에 해당하는 문서 페이지에서 '시작하기 전에' 섹션의 모든 단계를 완료했는지 확인합니다.
  • 전송 구성 속성이 올바릅니다.
  • 전송을 만드는 데 사용한 사용자 계정에 기본 리소스에 대한 액세스 권한이 있습니다.

전송 구성이 올바르고 적절한 권한이 부여되었다면 일반적으로 발생하는 문제에 대한 다음 해결 방법을 참조하세요.

오류: An unexpected issue was encountered. If this issue persists, please contact customer support.
해결 방법: 이 오류는 일반적으로 BigQuery의 일시적 중단이나 문제를 나타냅니다. 문제가 해결될 때까지 약 2시간이 소요됩니다. 문제가 지속되면 지원을 요청 하세요.
오류: INTERNAL: An internal error occurred and the request could not be completed. This is usually caused by a transient issue...
해결 방법: 이 오류는 일반적으로 일시적인 내부 문제를 나타냅니다. 이 오류가 발생하면 다음 예약된 실행에서 해결되는지 기다리거나 영향을 받는 날짜에 대해 수동으로 백필을 트리거할 수 있습니다. 문제가 지속되면 지원을 요청하세요.
오류: Quota Exceeded.

해결 방법: BigQuery의 로드 작업 할당량이 전송에 적용됩니다. 할당량을 늘려야 하는 경우 Cloud de Confiance by S3NS 영업 담당자에게 문의하세요. 자세한 내용은 할당량 및 한도를 참고하세요.

Cloud Billing 내보내기를 BigQuery로 로드하면 Quota Exceeded 오류가 발생할 수 있습니다. Cloud Billing 내보내기 테이블과 BigQuery Data Transfer Service 서비스에서 생성된 대상 BigQuery 테이블은 모두 파티션을 나눕니다. 이러한 BigQuery Data Transfer Service 작업을 설정하는 동안 덮어쓰기 옵션을 선택하면 내보내는 데이터 양에 따라 할당량 오류가 발생합니다. 할당량 문제 해결에 대한 자세한 내용은 할당량 및 한도 오류 문제 해결을 참조하세요.

오류가 Cloud Billing 내보내기를 위한 BigQuery Data Transfer Service 작업으로 인해 발생한 경우 개별 Cloud Billing 내보내기 테이블이 파티션을 나누므로 BigQuery Data Transfer Service에서 생성된 타겟 테이블도 파티션을 나눕니다. 따라서 이러한 데이터 전송 작업을 설정하는 동안 덮어쓰기 옵션을 선택하면 결제 계정의 기간에 따라 (DML) 할당량 오류가 발생합니다. 할당량 문제 해결에 대한 자세한 내용은 할당량 및 한도 오류 문제 해결을 참조하세요.

오류: The caller does not have permission.

해결 방법: Cloud de Confiance 콘솔에서 로그인한 계정이 전송을 만들 때 BigQuery Data Transfer Service에 선택한 계정과 같은지 확인합니다.

  • Cloud de Confiance 콘솔에 로그인한 계정:

    문제 해결 권한

  • BigQuery Data Transfer Service를 계속하려면 계정을 선택하세요.

    문제 해결 권한

오류: Access Denied: ... Permission bigquery.tables.get denied on table ...

해결 방법: BigQuery Data Transfer Service 서비스 에이전트에 대상 데이터 세트에 대한 bigquery.dataEditor 역할이 부여되었는지 확인합니다. 이 부여는 전송을 만들고 업데이트할 때 자동으로 적용되지만 이후에 액세스 정책이 수동으로 수정되었을 수도 있습니다. 권한을 다시 부여하려면 데이터 세트에 액세스 권한 부여를 참조하세요.

오류: region violates constraint constraints/gcp.resourceLocations on the resource projects/project_id

해결 방법: 이 오류는 사용자가 위치 제한 조직 정책에 지정된 제한된 위치에서 전송 구성을 만들려고 할 때 발생합니다. 해당 리전을 허용하도록 조직 정책을 변경하거나 조직 정책으로 제한되지 않는 리전에 있는 대상 데이터 세트로 전송 구성을 변경하면 이 문제를 해결할 수 있습니다.

오류: Please look into the errors[] collection for more details.

해결 방법: 이 오류는 데이터 전송에 실패할 때 발생할 수 있습니다. 데이터 전송이 실패한 이유에 관한 자세한 내용은 Cloud Logging을 사용하여 로그 보기를 참조하세요. 전송 run_id를 사용하여 검색하면 특정 실행의 로그를 찾을 수 있습니다.

오류: Network Attachment with connected endpoints cannot be deleted.

해결 방법: 이 오류는 사용자가 전송을 삭제한 직후 네트워크 첨부파일을 삭제하려고 할 때 발생할 수 있습니다. 이는 전송 삭제 후 BigQuery Data Transfer Service에서 전송과 연결된 모든 리소스를 완전히 삭제하는 데 며칠이 걸릴 수 있기 때문에 발생하며, 이로 인해 네트워크 연결이 삭제되지 않을 수 있습니다. 이 오류를 해결하려면 며칠 기다린 후에 네트워크 첨부파일을 삭제해 보세요. 네트워크 연결을 더 빨리 삭제하려면 지원팀에 문의하세요.

오류: Error while reading data, error message: CSV processing encountered too many errors, giving up.

해결 방법: 이 오류는 데이터 소스의 CSV 파일 구성과 전송 구성의 CSV 구성이 일치하지 않을 때 발생할 수 있습니다. 예를 들어 건너뛸 헤더 행0로 설정되어 있지만 소스 CSV 파일에 하나 이상의 헤더 행이 포함된 경우 이 오류가 발생할 수 있습니다. 이 오류를 수정하려면 전송 구성의 CSV 구성이 올바르고 소스 CSV 파일의 구성과 일치하는지 확인하세요.

오류: Error 400: DTS service agent needs iam.serviceAccounts.getAccessToken permission or [SERVICE_ACCOUNT] doesn't exist.

근본 원인: 이 오류는 BigQuery Data Transfer Service(DTS) 서비스 에이전트에 전송에 사용되는 서비스 계정을 가장하는 데 필요한 권한이 없음을 나타냅니다. 이는 일반적으로 교차 프로젝트 승인 시나리오에서 발생하거나 Terraform과 같은 코드형 인프라 (IaC) 도구를 사용하여 전송이 구성된 경우 발생합니다.

해결 방법: 가장해야 하는 특정 서비스 계정의 DTS 서비스 에이전트에 서비스 계정 토큰 생성자 역할(roles/iam.serviceAccountTokenCreator)을 부여합니다.

gcloud iam service-accounts add-iam-policy-binding service_account \
--member serviceAccount:service-destination_project_number@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com \
--role roles/iam.serviceAccountTokenCreator

각 항목의 의미는 다음과 같습니다.

  • service_account은 이전 권한을 부여하는 데 사용된 계정의 이메일입니다.
  • destination_project_number는 전송 구성이 있는 프로젝트 번호입니다. 프로젝트 번호를 확인하는 방법은 프로젝트 식별을 참고하세요.
오류: For asset "ASSET", no eligible column found for splitting (Reason: Primary or Indexed Key columns found, but none are of supported types (INTEGER, TINYINT, SMALLINT, FLOAT, REAL, DOUBLE, NUMERIC, BIGINT, DECIMAL, DATE, BOOLEAN))
해결 방법: 이 오류는 소스 테이블에서 BigQuery 테이블로 2,000,000개가 넘는 레코드를 전송하려고 하는데 소스 테이블에 지원되는 데이터 유형의 기본 키나 색인 생성된 열이 없는 경우 발생할 수 있습니다. 이 문제를 해결하려면 지원되는 데이터 유형 중 하나를 사용하여 소스 테이블에서 기본 키 또는 색인 열로 열을 구성하세요. 자세한 내용은 전송 소스 가이드의 제한사항 섹션을 참고하세요.

승인 및 권한 문제

다음은 다양한 데이터 소스에서 데이터를 전송할 때 발생할 수 있는 일반적인 권한 오류입니다.

오류: BigQuery Data Transfer Service is not enabled for <project_id>
오류: BigQuery Data Transfer Service has not been used in project <project_id> before or it is disabled ...

해결 방법: 다음 단계에 따라 서비스 에이전트 역할이 부여되었는지 확인합니다.

  1. Cloud de Confiance 콘솔에서 IAM 및 관리자 페이지로 이동합니다.

    IAM 및 관리자로 이동

  2. S3NS제공 역할 부여 포함 체크박스를 선택합니다.

  3. service-<project_number>@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com 이름의 서비스 계정이 표시되는지 또는 BigQuery 데이터 전송 서비스에 BigQuery Data Transfer Service 역할이 부여되었는지 확인합니다.

    서비스 계정에 서비스 에이전트 역할이 있는지 확인합니다.

서비스 계정이 표시되지 않거나 BigQuery Data Transfer Service 서비스 에이전트 역할이 부여되지 않은 경우 Cloud de Confiance 콘솔에서 사전 정의된 역할을 부여하거나 다음 Google Cloud CLI 명령어를 실행합니다.

gcloud projects add-iam-policy-binding PROJECT_NUMBER \
--member serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com \
--role roles/bigquerydatatransfer.serviceAgent

PROJECT_NUMBER를 이 서비스 계정과 연결된 프로젝트 번호로 바꿉니다.

오류: There was an error loading this table. Check that the table exists and that you have the correct permissions.

해결 방법:

  1. Cloud de Confiance 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 전송에 사용된 대상 데이터 세트를 클릭합니다.

  3. 공유 메뉴를 클릭한 다음 권한을 클릭합니다.

  4. BigQuery 데이터 편집자 역할을 펼칩니다.

  5. BigQuery Data Transfer Service 서비스 에이전트가 이 역할에 추가되었는지 확인합니다. 그렇지 않으면 BigQuery Data Transfer Service 서비스 에이전트에 BigQuery 데이터 편집자(roles/bigquery.dataEditor) 역할을 부여합니다.

BigQuery 데이터 편집자 역할이 추가되었는지 확인합니다.

오류: A permission denied error was encountered: PERMISSION_DENIED. Please ensure that the user account setting up the transfer config has the necessary permissions, and that the configuration settings are correct

해결 방법:

  1. Cloud de Confiance 콘솔에서 데이터 전송 페이지로 이동합니다.

    데이터 전송으로 이동

  2. 실패한 전송을 클릭한 다음 구성 탭을 선택합니다.

  3. 사용자 필드에 나열된 전송 소유자에게 데이터 소스에 필요한 모든 권한이 있는지 확인합니다.

전송 소유자에게 필요한 권한이 모두 없는 경우 사용자 인증 정보를 업데이트하여 필요한 권한을 부여합니다. 필요한 권한을 가진 전송 소유자를 다른 사용자로 변경할 수도 있습니다.

오류: Authentication failure: User Id not found. Error code: INVALID_USERID

해결 방법: 전송 소유자의 사용자 ID가 잘못되었습니다. 사용자 인증 정보를 업데이트하여 전송 소유자를 다른 사용자로 변경합니다. 서비스 계정을 사용하는 경우 데이터 전송을 실행하는 계정에 서비스 계정을 사용하는 데 필요한 모든 권한이 있는지도 확인해야 합니다.

오류: The user does not have permission

해결 방법: 전송 소유자가 서비스 계정이고, 해당 서비스에 필요한 모든 권한이 설정되어 있는지 확인합니다. 다른 가능성은 사용된 서비스 계정이 이 전송을 만드는 데 사용한 프로젝트가 아닌 다른 프로젝트에 생성되었을 수 있습니다. 프로젝트 간 권한 문제를 해결하려면 다음 리소스를 참조하세요.

오류: HttpError 403 when requesting returned "The caller does not have permission"

googleapiclient.errors.HttpError: <HttpError 403 when requesting returned "The caller does not have permission". Details: "The caller does not have permission">

이 오류는 서비스 계정을 사용하여 예약된 쿼리를 설정하려고 시도할 때 표시될 수 있습니다.

해결 방법: 서비스 계정에 예약된 쿼리를 예약하거나 수정하는 데 필요한 모든 권한이 있는지 확인하고, 예약된 쿼리를 설정하는 사용자에게 서비스 계정에 대한 액세스 권한이 있는지 확인하세요.

올바른 권한이 모두 할당되었지만 여전히 오류가 발생하는 경우 프로젝트에 교차 프로젝트 서비스 계정 사용 중지 정책이 기본적으로 적용되는지 확인합니다. Cloud de Confiance 콘솔에서 IAM 및 관리자 > 조직 정책으로 이동하여 정책을 검색하면 정책을 확인할 수 있습니다.

서비스 계정에 교차 프로젝트 서비스 계정 사용 정책이 적용되는지 확인합니다.

교차 프로젝트 서비스 계정 사용 중지 정책이 시행되면 다음을 수행하여 정책을 사용 중지할 수 있습니다.

  1. IAM 및 관리자 > 서비스 계정으로 이동하여 Cloud de Confiance 콘솔을 통해 프로젝트와 연결된 서비스 계정을 식별합니다. 이 뷰에는 현재 프로젝트의 모든 서비스 계정이 표시됩니다.
  2. 다음 명령어를 사용하여 서비스 계정이 있는 프로젝트에서 정책을 사용 중지하세요. 이 정책을 비활성화하려면 사용자가 조직 정책 관리자여야 합니다. 조직 관리자만 사용자에게 이 역할을 부여할 수 있습니다.
gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage --project=[PROJECT-ID]

이벤트 기반 전송 구성 문제

다음은 이벤트 기반 전송을 만들 때 발생할 수 있는 일반적인 문제입니다.

오류: Data Transfer Service is not authorized to pull message from the provided Pub/Sub subscription.

해결 방법: BigQuery Data Transfer Service 서비스 에이전트pubsub.subscriber 역할이 부여되었는지 확인합니다.

  1. Cloud de Confiance 콘솔에서 Pub/Sub 페이지로 이동합니다.

    Pub/Sub로 이동

  2. 이벤트 기반 전송에 사용한 Pub/Sub 구독을 선택합니다.

  3. 정보 패널이 표시되지 않으면 오른쪽 상단에 있는 정보 패널 표시를 클릭합니다.

  4. 권한 탭에서 BigQuery Data Transfer Service 서비스 에이전트pubsub.subscriber 역할이 있는지 확인합니다.

서비스 에이전트에 구독에 대한 pubsub.subscriber가 있는지 확인합니다.

서비스 에이전트에 pubsub.subscriber 역할이 부여되지 않은 경우 주 구성원 추가를 클릭하여 service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.compubsub.subscriber 역할을 부여합니다.

오류: Cloud Pub/Sub API has not been used in project PROJECT_NUMBER before or it is disabled.

해결 방법: 프로젝트에 Cloud Pub/Sub API가 사용 설정되어 있는지 확인합니다.

  1. Cloud de Confiance 콘솔에서 API 및 서비스 페이지로 이동합니다.

    API 및 서비스로 이동합니다.

  2. API 및 서비스 사용 설정을 클릭합니다.

  3. Cloud Pub/Sub API를 검색하고 첫 번째 결과를 선택한 후 사용 설정을 클릭합니다.

오류: Data Transfer Service does not have required permission to use project quota of project PROJECT_NUMBER to access Pub/Sub.

해결 방법: BigQuery Data Transfer Service 서비스 에이전트serviceusage.serviceUsageConsumer 역할이 부여되었는지 확인합니다.

  1. Cloud de Confiance 콘솔에서 IAM 및 관리자 페이지로 이동합니다.

    IAM 및 관리자로 이동

  2. S3NS제공 역할 부여 포함 체크박스를 선택합니다.

  3. service-<project_number>@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com 이름의 서비스 계정이 표시되고 서비스 사용량 소비자 역할이 부여되었는지 확인합니다.

    서비스 계정에 serviceusage.serviceUsageConsumer 역할이 있는지 확인합니다.

문제: Cloud Storage 이벤트 기반 전송을 사용하는 경우 Cloud Storage 버킷에 파일을 업로드하거나 업데이트한 후 전송 실행이 트리거되지 않습니다.

전송 실행은 이벤트가 수신된 직후에 트리거되지 않습니다. 전송 실행을 트리거하는 데 몇 분 정도 걸릴 수 있습니다. 다음 전송 실행의 상태를 확인하려면 실행 기록다음 실행 목표 날짜 필드를 확인하세요. 이 필드에는 다음 실행의 예약 시간이 표시되거나, 수신된 이벤트가 없는 경우 다음 실행을 예약하기 위해 이벤트 대기 중이 표시됩니다. Cloud Storage 버킷에 파일을 업로드하거나 업데이트했지만 다음 실행 타겟 날짜가 업데이트되지 않고 10~20분 동안 실행이 트리거되지 않는 경우 다음 해결 방법을 참고하세요.

해결 방법: 전송 구성에 지정된 Pub/Sub 구독이 Cloud Storage 이벤트에서 게시된 메시지를 가져올 수 있는지 확인합니다.

  1. Cloud de Confiance 콘솔에서 Pub/Sub 페이지로 이동합니다.

    Pub/Sub로 이동

  2. 이벤트 기반 전송에 사용한 Pub/Sub 구독을 선택합니다.

  3. 측정항목 탭에서 '가장 오래된 미확인 메시지 기간' 그래프를 확인하고 메시지가 있는지 확인합니다.

전송되는 메일이 있는지 확인

게시된 메시지가 없으면 Cloud Storage에 Pub/Sub 알림이 올바르게 구성되어 있는지 확인합니다. 다음 Google Cloud CLI 명령어를 사용하여 버킷과 연결된 알림 구성을 확인할 수 있습니다.

gcloud storage buckets notifications list gs://BUCKET_NAME

BUCKET_NAME을 알림에 사용하는 버킷의 이름으로 바꿉니다. Cloud Storage용 Pub/Sub 알림 구성에 관한 자세한 내용은 Cloud Storage용 Pub/Sub 알림 구성을 참고하세요.

메시지가 있는 경우 다른 이벤트 기반 전송 구성에서 동일한 Pub/Sub 구독이 사용되는지 확인합니다. 여러 이벤트 기반 전송 구성에서 같은 Pub/Sub 구독을 재사용할 수 없습니다. 이벤트 기반 전송에 관한 자세한 내용은 이벤트 기반 전송을 참고하세요.

할당량 문제

오류: Quota exceeded: Your project exceeded quota for imports per project.
해결 방법: 프로젝트에 너무 많은 전송이 예약되지 않았는지 확인합니다. 전송으로 시작된 로드 작업 수 계산에 대한 자세한 내용은 할당량 및 한도를 참조하세요.