이벤트 기반 전송
BigQuery Data Transfer Service를 사용하여 이벤트 알림을 기반으로 데이터를 자동으로 로드하는 이벤트 기반 전송을 만들 수 있습니다. 비용 효율성을 최적화하는 증분 데이터 수집이 필요한 경우에 이벤트 기반 전송을 사용하는 것이 좋습니다.
이벤트 기반 전송을 설정하면 각 데이터 전송 간에 지연 시간이 몇 분 정도 발생할 수 있습니다. 데이터를 즉시 사용할 수 있어야 하는 경우에는 최대한 짧은 지연 시간으로 데이터를 BigQuery로 직접 스트리밍하는 Storage Write API를 사용하여 것이 좋습니다. Storage Write API는 가장 까다로운 사용 사례에 실시간 업데이트를 제공합니다.
두 가지 중 하나를 선택할 때는 이벤트 기반 전송을 통해 경제적인 증분 일괄 수집을 우선시해야 하는지 또는 Storage Write API의 유연성을 선호하는지 고려하세요.
이벤트 기반 전송을 지원하는 데이터 소스
BigQuery Data Transfer Service는 다음 데이터 소스와 함께 이벤트 기반 전송을 사용할 수 있습니다.
제한사항
BigQuery로의 이벤트 기반 전송에는 다음과 같은 제한사항이 적용됩니다.
- 이벤트 기반 전송이 트리거된 후에는 이벤트가 해당 시간 내에 도착하는지 여부와 관계없이 BigQuery Data Transfer Service는 다음 전송 실행이 트리거될 때까지 최대 10분 동안 기다립니다.
- 이벤트 기반 전송은 소스 URI 또는 데이터 경로의 런타임 파라미터를 지원하지 않습니다.
- 여러 이벤트 기반 전송 구성에서 같은 Pub/Sub 구독을 재사용할 수 없습니다.
Cloud Storage 이벤트 기반 전송 설정
Cloud Storage의 이벤트 기반 전송은 Pub/Sub 알림을 사용하여 소스 버킷의 객체가 수정되거나 추가된 시점을 확인합니다. 증분 전송 모드를 사용하는 경우 소스 버킷에서 객체를 삭제해도 대상 BigQuery 테이블의 연결된 데이터는 삭제되지 않습니다.
시작하기 전에
Cloud Storage 이벤트 기반 전송을 구성하기 전에 다음 단계를 수행해야 합니다.
알림을 수신하는 프로젝트에 Pub/Sub API를 사용 설정합니다.
Cloud Storage 관리자(
roles/storage.admin) 및 Pub/Sub 관리자(roles/pubsub.admin)는 이벤트 기반 전송 구성 만들기로 진행할 수 있습니다.Cloud Storage 관리자(
roles/storage.admin) 및 Pub/Sub 관리자(roles/pubsub.admin)가 아니면 관리자에게roles/storage.admin및roles/pubsub.admin역할을 부여해 달라고 요청하거나 관리자에게 다음 섹션의 Pub/Sub 구성 및 서비스 에이전트 권한 구성을 완료해 달라고 요청하고 사전 구성된 Pub/Sub 구독을 사용하여 이벤트 기반 전송 구성을 만듭니다.이벤트 기반 전송 구성 알림을 설정하는 데 필요한 상세 권한은 다음과 같습니다.
알림 게시에 사용할 주제와 구독을 만들려면
pubsub.topics.create및pubsub.subscriptions.create권한이 있어야 합니다.새 주제와 구독을 사용할지 또는 기존 주제와 구독을 사용할지 여부에 관계없이 다음 권한이 있어야 합니다. Pub/Sub에서 주제와 구독을 이미 만들었으면 다음 권한이 이미 있을 수 있습니다.
Pub/Sub 알림을 구성하려는 Cloud Storage 버킷에 대한 다음 권한이 있어야 합니다.
storage.buckets.getstorage.buckets.update
pubsub.admin및storage.admin사전 정의된 IAM 역할에는 Cloud Storage 이벤트 기반 전송을 구성하는 데 필요한 모든 권한이 있습니다. 자세한 내용은 Pub/Sub 액세스 제어를 참조하세요.
Cloud Storage에서 Pub/Sub 알림 구성
Cloud Storage에서 Pub/Sub를 사용하기 위한 기본 요건을 충족했는지 확인합니다.
Cloud Storage 버킷에 알림 구성을 적용합니다.
gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME --event-types=OBJECT_FINALIZE
다음을 바꿉니다.
BUCKET_NAME: 파일 알림 이벤트를 트리거할 Cloud Storage 버킷의 이름TOPIC_NAME: 파일 알림 이벤트를 수신할 Pub/Sub 주제의 이름
gcloud CLI 외의 다른 방법을 사용하여 알림 구성을 추가할 수도 있습니다. 자세한 내용은 알림 구성 적용을 참조하세요.
Cloud Storage에 Pub/Sub 알림이 올바르게 구성되어 있는지 확인합니다.
gcloud storage buckets notifications list명령어를 사용합니다.gcloud storage buckets notifications list gs://BUCKET_NAME
성공하면 다음과 비슷한 응답이 표시됩니다.
etag: '132' id: '132' kind: storage#notification payload_format: JSON_API_V1 selfLink: https://www.googleapis.com/storage/v1/b/my-bucket/notificationConfigs/132 topic: //pubsub.googleapis.com/projects/my-project/topics/my-bucket
주제에 대한 pull 구독을 만듭니다.
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME
SUBSCRIPTION_ID를 새 Pub/Sub 풀(pull) 구독의 이름이나 ID로 바꿉니다.다른 방법을 사용하여 풀(pull) 구독을 만들 수 있습니다.
서비스 에이전트 권한 구성
프로젝트의 BigQuery Data Transfer Service 에이전트 이름을 찾습니다.
IAM 및 관리자 페이지로 이동합니다.
Google 제공 역할 부여 포함 체크박스를 선택합니다.
BigQuery Data Transfer Service 에이전트가
service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com이름으로 표시되고 BigQuery Data Transfer Service 에이전트 역할(roles/bigquerydatatransfer.serviceAgent)이 부여됩니다.
서비스 에이전트에 대한 자세한 내용은 서비스 에이전트를 참조하세요.
BigQuery Data Transfer Service 에이전트에 Pub/Sub 구독자 역할(
pubsub.subscriber)을 부여합니다.Cloud 콘솔
Google Cloud 콘솔을 통한 액세스 제어의 안내에 따라 BigQuery Data Transfer Service 에이전트에
Pub/Sub Subscriber역할을 부여합니다. 역할은 주제, 구독 또는 프로젝트 수준에서 부여할 수 있습니다.gcloudCLI정책 설정의 안내에 따라 다음 바인딩을 추가합니다.
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com" }
PROJECT_NUMBER를 생성되고 청구되는 전송 리소스를 호스팅하는 프로젝트 ID로 바꿉니다.할당량 사용량 기여: BigQuery Data Transfer Service 에이전트가 Pub/Sub 구독에 액세스하면 할당량 사용량에 대한 요금이 사용자 프로젝트에 청구됩니다.
BigQuery Data Transfer Service 에이전트에 Pub/Sub 구독자 역할(
pubsub.subscriber)이 부여되었는지 확인합니다.Google Cloud 콘솔에서 Pub/Sub 페이지로 이동합니다.
이벤트 기반 전송에 사용한 Pub/Sub 구독을 선택합니다.
정보 패널이 표시되지 않으면 오른쪽 상단에 있는 정보 패널 표시를 클릭합니다.
권한 탭에서 BigQuery Data Transfer Service 서비스 에이전트에 Pub/Sub 구독자 역할(
pubsub.subscriber)이 있는지 확인합니다.

알림과 권한을 구성하는 요약된 명령어
다음 Google Cloud CLI 명령어에는 이전 섹션의 설명대로 알림과 권한을 설정하는 데 필요한 모든 명령어가 포함되어 있습니다.
gcloud
PROJECT_ID=project_id CONFIG_NAME=config_name RESOURCE_NAME="bqdts-event-driven-${CONFIG_NAME}" # Create a Pub/Sub topic. gcloud pubsub topics create "${RESOURCE_NAME}" --project="${PROJECT_ID}" # Create a Pub/Sub subscription. gcloud pubsub subscriptions create "${RESOURCE_NAME}" --project="${PROJECT_ID}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}" # Create a Pub/Sub notification. gcloud storage buckets notifications create gs://"${RESOURCE_NAME}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}" --event-types=OBJECT_FINALIZE # Grant roles/pubsub.subscriber permission to the DTS service agent. PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format='value(projectNumber)') gcloud pubsub subscriptions add-iam-policy-binding "${RESOURCE_NAME}" --project="${PROJECT_ID}" --member=serviceAccount:service-"${PROJECT_NUMBER}"@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com --role=roles/pubsub.subscriber
다음을 바꿉니다.
PROJECT_ID: 프로젝트의 ID입니다.CONFIG_NAME: 이 전송 구성을 식별하는 이름
전송 구성 만들기
Cloud Storage 전송을 만들고 일정 유형으로 이벤트 기반을 선택하여 이벤트 기반 Cloud Storage 전송을 만들 수 있습니다. Cloud Storage 관리자(roles/storage.admin) 및 Pub/Sub 관리자(roles/pubsub.admin)에게는 BigQuery Data Transfer Service가 알림을 전송하도록 Cloud Storage를 자동으로 구성할 수 있는 충분한 권한이 있습니다.
Cloud Storage 관리자(roles/storage.admin) 및 Pub/Sub 관리자(roles/pubsub.admin)가 아닌 경우 이벤트 기반 전송을 만들려면 먼저 관리자에게 역할을 부여해 달라고 요청하거나 관리자에게 필요한 Cloud Storage의 Pub/Sub 알림 구성 및 서비스 에이전트 권한 구성을 완료해 달라고 요청해야 합니다.