크로스 클라우드 연결 만들기
크로스 클라우드 연결은 Amazon Web Services (AWS), Microsoft Azure, Salesforce Data 360의 데이터를 BigQuery로 가져와 쿼리하는 BigQuery 연결입니다. 이러한 연결은 BigQuery Omni를 사용하는 표준 BigQuery 연결의 대안입니다. BigQuery Omni에서는 BigQuery가 경량 컴퓨팅 워커를 원격 지역에 배포하여 데이터 이동 없이 다른 클라우드의 데이터를 쿼리할 수 있도록 합니다.
워크로드는 다음과 같은 이유로 표준 연결 대신 크로스 클라우드 연결을 사용하는 것이 좋습니다.
- 기능 일관성 다른 클라우드의 데이터를 BigQuery로 가져오면 표준 연결을 통해 사용할 수 없는 BigQuery AI 기능, Gemini Enterprise Agent Platform, 구체화된 뷰, 사용자 정의 함수 및 기타 기능에 직접 액세스할 수 있습니다.
- 비용 효율성 크로스 클라우드 연결을 사용하는 워크로드는 표준 슬롯 예약 및 약정을 사용하므로 별도의 컴퓨팅 용량을 관리할 필요가 없습니다.
- 지능형 캐싱. 데이터가 클라우드 간에 전송되는 동안 BigQuery는 자동으로 프래그먼트를 로컬에 캐시하므로 후속 쿼리에서 상당한 크로스 클라우드 이그레스 요금이 발생하지 않습니다. 자세한 내용은 지능형 캐싱을 참고하세요.
워크로드에 Apache Iceberg 카탈로그가 포함되거나 BigQuery 이외의 엔진에서 쿼리 지원이 필요한 경우 경계 없는 레이크하우스의 크로스 클라우드 데이터 액세스 기능을 대신 사용하는 것이 좋습니다.
시작하기 전에
사용자에게 이 문서의 각 작업을 수행하는 데 필요한 권한을 부여하는 Identity and Access Management 및 서드 파티 역할을 부여합니다.
필요한 BigQuery 역할
교차 클라우드 연결을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 BigQuery 관리자 (roles/bigquery.admin) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
필수 서드 파티 역할
교차 클라우드 연결을 만드는 데 필요한 권한을 얻으려면 다음 서드 파티 역할이 있어야 합니다.
- AWS: AWS 계정에서 IAM 정책과 역할을 만들 수 있는 역할
- Azure: Microsoft Entra ID (Azure AD)에서 앱 등록을 관리하고 대상 Azure 계정에 스토리지 Blob 데이터 리더와 같은 역할을 할당할 수 있는 역할
AWS 크로스 클라우드 연결 만들기
AWS 크로스 클라우드 연결을 만들려면 다음 단계를 따르세요.
- 표준 BigQuery 연결과 마찬가지로 BigQuery용 AWS IAM 정책을 만듭니다.
- 표준 BigQuery 연결과 마찬가지로 BigQuery용 AWS IAM 역할을 만듭니다.
연결 리소스를 만들려면
bq mk --connection명령어를 사용합니다.bq mk --connection \ --connection_type='AWS' \ --location=LOCATION \ --project_id=PROJECT_ID \ --properties='{"accessRole":{"iamRoleId":"arn:aws:iam::AWS_ACCOUNT_ID:role/ROLE_NAME"}}' \ CONNECTION_ID
다음을 바꿉니다.
LOCATION: BigQuery Omni 위치가 아닌 표준 BigQuery 위치입니다. 리전 선택에 관한 안내는 리전 권장사항을 참고하세요.PROJECT_ID: Google Cloud 프로젝트의 ID입니다.AWS_ACCOUNT_ID: 이전 단계의 AWS IAM 사용자 ID입니다.ROLE_NAME: 선택한 AWS 역할 정책 이름입니다.CONNECTION_ID: 이 연결 리소스에 부여할 ID입니다.
서비스 계정 정보를 기록하려면
bq show명령어를 사용합니다.bq show --connection \ --location=LOCATION \ PROJECT_ID.LOCATION.CONNECTION_ID
표준 BigQuery 연결에서와 같이 서비스 계정 정보를 사용하여 AWS 역할에 트러스트 정책을 추가합니다.
설정된 AWS 교차 클라우드 연결을 사용하여 원격 데이터를 쿼리할 테이블과 데이터 세트를 만들 수 있습니다.
AWS 예시
다음 예에서는 크로스 클라우드 연결을 사용하여 Amazon Simple Storage Service (Amazon S3) 버킷에서 직접 Parquet 파일을 쿼리하는 외부 테이블을 만듭니다.
CREATE SCHEMA `my-project.aws_raw_data` OPTIONS ( location = 'us-east4'); CREATE EXTERNAL TABLE `my-project.aws_raw_data.sales_parquet` WITH CONNECTION `us-east4.my-aws-connection` OPTIONS ( format = 'PARQUET', uris = ['s3://my-data-bucket/sales/year=2025/*']);
다음 예에서는 교차 클라우드 연결을 사용하여 AWS Glue를 통해 전체 데이터베이스를 BigQuery로 제휴합니다.
CREATE EXTERNAL SCHEMA `my-project.aws_glue_data` WITH CONNECTION `us-east4.my-aws-connection` OPTIONS ( location = 'us-east4', external_source = 'aws-glue://arn:aws:glue:us-east-4:123456789:database/test_database');
AWS Glue 페더레이션에 대한 자세한 내용은 AWS Glue 제휴 데이터 세트 만들기 및 관리를 참고하세요.
Azure 크로스 클라우드 연결 만들기
Azure 크로스 클라우드 연결을 만들려면 다음 단계를 따르세요.
- 표준 BigQuery 연결과 마찬가지로 Azure 테넌트에서 애플리케이션을 만들고 애플리케이션 (클라이언트) 및 디렉터리 (테넌트) ID를 기록해 둡니다.
- 표준 BigQuery 연결과 마찬가지로 Azure 애플리케이션에 역할을 할당합니다.
연결 리소스를 만들려면
bq mk --connection명령어를 사용합니다.bq mk --connection \ --connection_type='Azure' \ --tenant_id=TENANT_ID \ --location=LOCATION \ --federated_azure=true \ --federated_app_client_id=APP_ID \ --project_id=PROJECT_ID \ CONNECTION_ID
다음을 바꿉니다.
TENANT_ID: Azure 계정이 포함된 Azure 디렉터리의 테넌트 IDLOCATION: BigQuery Omni 위치가 아닌 표준 BigQuery 위치입니다. 리전 선택에 관한 안내는 리전 권장사항을 참고하세요.APP_ID: Azure 애플리케이션(클라이언트) ID입니다.PROJECT_ID: Google Cloud 프로젝트의 ID입니다.CONNECTION_ID: 이 연결 리소스에 부여할 ID입니다.
서비스 계정 정보를 기록하려면
bq show명령어를 사용합니다.bq show --connection \ --location=LOCATION \ PROJECT_ID.LOCATION.CONNECTION_ID
표준 BigQuery 연결과 마찬가지로 서비스 계정 정보를 사용하여 연결된 사용자 인증 정보를 추가합니다.
설정된 Azure 교차 클라우드 연결을 사용하여 이제 테이블과 데이터 세트를 만들어 원격 데이터를 쿼리할 수 있습니다.
Azure 예
다음 예에서는 크로스 클라우드 연결을 사용하여 Azure Blob Storage 컨테이너에서 직접 Parquet 파일을 쿼리하는 외부 테이블을 만듭니다.
CREATE SCHEMA `my-project.azure_raw_data` OPTIONS ( location = 'us-east4'); CREATE EXTERNAL TABLE `my-project.azure_raw_data.sales_parquet` WITH CONNECTION `us-east4.my-azure-connection` OPTIONS ( format = 'PARQUET', uris = ['azure://mystorageaccount.blob.core.windows.net/mycontainer/sales/year=2025/*']);
다음 예에서는 크로스 클라우드 연결을 사용하여 Blob Storage 컨테이너에서 원시 CSV 내보내기를 쿼리하는 외부 테이블을 만듭니다.
CREATE EXTERNAL TABLE `my-project.azure_raw_data.daily_logs_csv` WITH CONNECTION `us-east4.my-azure-connection` OPTIONS ( format = 'CSV', skip_leading_rows = 1, uris = ['azure://mystorageaccount.blob.core.windows.net/mycontainer/logs/*.csv']);
Data 360 크로스 클라우드 연결 만들기
Data 360 교차 클라우드 연결을 만들려면 Data 360 데이터 세트를 BigQuery에 연결하는 단계를 따르세요. 단, BigQuery Omni 위치에 연결된 데이터 세트를 만드는 대신 표준 BigQuery 위치에 만드세요. 리전 선택에 관한 안내는 리전 권장사항을 참고하세요.
새 데이터 세트를 사용하도록 쿼리를 업데이트한 후에는 기존 연결된 데이터 세트와 BigQuery Omni 구체화된 뷰를 삭제할 수 있습니다.
리전 추천
크로스 클라우드 연결에 표준 BigQuery 리전을 선택할 때는 최적의 비용과 성능 효율성을 위해 데이터와 물리적으로 가장 가까운 리전을 선택하세요.
다음 표에는 AWS 리전과 가장 적합한 BigQuery 리전이 나와 있습니다.
| AWS 리전 | 가장 가까운 BigQuery 리전 | 기타 가까운 BigQuery 리전 |
|---|---|---|
us-east-1 |
us-east4 |
us-east1us-east5us-central1
|
us-east-2 |
us-east5 |
us-east4us-east1us-central1
|
us-west-1 |
us-west2 |
us-west4us-west1us-west3
|
us-west-2 |
us-west1 |
us-west3us-west4us-west2
|
ca-central-1 |
northamerica-northeast1 |
northamerica-northeast2us-east4us-east5
|
sa-east-1 |
southamerica-east1 |
southamerica-west1us-east1us-south1
|
eu-west-1 |
europe-west1 |
europe-west2europe-west9europe-west4
|
eu-west-2 |
europe-west2 |
europe-west1europe-west9europe-west4
|
eu-west-3 |
europe-west9 |
europe-west1europe-west2europe-west3
|
eu-central-1 |
europe-west3 |
europe-west4europe-west1europe-west6
|
eu-central-2 |
europe-west6 |
europe-west8europe-west12europe-west3
|
eu-north-1 |
europe-north1 |
europe-west4europe-central2europe-west1
|
eu-south-1 |
europe-west8 |
europe-west12europe-west6europe-west3
|
eu-south-2 |
europe-southwest1 |
europe-west9europe-west1europe-west8
|
me-central-1 |
me-central1 |
me-central2me-west1asia-south1
|
me-south-1 |
me-central2 |
me-central1me-west1asia-south1
|
af-south-1 |
europe-southwest1 |
me-central2me-west1europe-west1
|
ap-east-1 |
asia-east2 |
asia-east1asia-southeast1asia-northeast1
|
ap-northeast-1 |
asia-northeast1 |
asia-northeast2asia-northeast3asia-east1
|
ap-northeast-2 |
asia-northeast3 |
asia-northeast2asia-northeast1asia-east1
|
ap-northeast-3 |
asia-northeast2 |
asia-northeast1asia-northeast3asia-east1
|
ap-south-1 |
asia-south1 |
asia-south2me-central1asia-southeast1
|
ap-south-2 |
asia-south2 |
asia-south1asia-southeast1me-central1
|
ap-southeast-1 |
asia-southeast1 |
asia-southeast2asia-east1asia-south1
|
ap-southeast-2 |
australia-southeast1 |
australia-southeast2asia-southeast2asia-southeast1
|
ap-southeast-3 |
asia-southeast2 |
asia-southeast1australia-southeast1asia-east1
|
다음 표에는 Azure 리전과 가장 적합한 BigQuery 리전이 나와 있습니다.
| Azure 리전 | 가장 가까운 BigQuery 리전 | 기타 가까운 BigQuery 리전 |
|---|---|---|
| 미국 동부 | us-east4 |
us-east1us-east5us-central1
|
| 미국 동부 2 | us-east4 |
us-east1us-east5us-south1
|
| 미국 서부 | us-west1 |
us-west2us-west3us-west4
|
| 미국 서부 2 | us-west1 |
us-west4us-west3us-west2
|
| 미국 서부 3 | us-west4 |
us-west2us-west3us-west1
|
| 미국 중부 | us-central1 |
us-east5us-east4us-east1
|
| 미국 중북부 | us-east5 |
us-central1us-east4us-east1
|
| 미국 중남부 | us-south1 |
us-east5us-central1us-east1
|
| 미국 중서부 | us-west3 |
us-central1us-west4us-west2
|
| 캐나다 중부 | northamerica-northeast2 |
northamerica-northeast1us-east5us-east4
|
| 캐나다 동부 | northamerica-northeast1 |
northamerica-northeast2us-east4us-east5
|
| 서유럽 | europe-west4 |
europe-west1europe-west3europe-west9
|
| 북유럽 | europe-west1 |
europe-west2europe-west9europe-west4
|
| 프랑스 중부 | europe-west9 |
europe-west1europe-west2europe-west3
|
| 프랑스 남부 | europe-west9 |
europe-southwest1europe-west8europe-west1
|
| 독일 중서부 | europe-west3 |
europe-west4europe-west1europe-west6
|
| 독일 북부 | europe-west3 |
europe-west4europe-central2europe-west2
|
| 스위스 북부 | europe-west6 |
europe-west8europe-west12europe-west3
|
| 스위스 서부 | europe-west6 |
europe-west9europe-west8europe-west3
|
| 영국 남부 | europe-west2 |
europe-west1europe-west9europe-west4
|
| 영국 서부 | europe-west2 |
europe-west1europe-west9europe-west4
|
| 노르웨이 동부 | europe-north1 |
europe-west4europe-central2europe-west1
|
| 노르웨이 서부 | europe-north1 |
europe-west4europe-central2europe-west1
|
| 스웨덴 중부 | europe-north1 |
europe-west4europe-central2europe-west1
|
| 동아시아 | asia-east2 |
asia-east1asia-southeast1asia-northeast1
|
| 동남아시아 | asia-southeast1 |
asia-southeast2asia-east1asia-south1
|
| 일본 동부 | asia-northeast1 |
asia-northeast2asia-northeast3asia-east1
|
| 일본 서부 | asia-northeast2 |
asia-northeast1asia-northeast3asia-east1
|
| 대한민국 중부 | asia-northeast3 |
asia-northeast2asia-northeast1asia-east1
|
| 오스트레일리아 동부 | australia-southeast1 |
australia-southeast2asia-southeast2asia-southeast1
|
| 오스트레일리아 남동부 | australia-southeast2 |
australia-southeast1asia-southeast1asia-east1
|
| 오스트레일리아 중부 | australia-southeast1 |
australia-southeast2asia-southeast2asia-southeast1
|
| 서인도 | asia-south1 |
asia-south2me-central1asia-southeast1
|
| 인도 중부 | asia-south1 |
asia-south2me-central1asia-southeast1
|
| 남인도 | asia-south1 |
asia-south2asia-southeast1me-central1
|
다음 단계
- BigQuery 분석 알아보기