예약 할당 작업
BigQuery Reservation API를 사용하면 전용 슬롯(약정)을 구입하고, 슬롯 풀(예약)을 만들고, 이러한 예약에 프로젝트, 폴더, 조직을 할당할 수 있습니다.
예약 할당 만들기
구매한 슬롯을 사용하려면 프로젝트, 폴더 또는 조직을 슬롯 예약에 할당하는 할당을 만듭니다.
프로젝트는 할당된 리소스 계층 구조에서 가장 구체적인 단일 예약을 사용합니다. 폴더 할당은 조직 할당을 재정의하고 프로젝트 할당은 폴더 할당을 재정의합니다. Standard 버전 예약에서는 폴더 및 조직 할당을 사용할 수 없습니다.
예약에 할당을 생성하려면 예약이 다음 기준 중 하나 이상을 충족해야 합니다.
0이 아닌 할당된 기준 슬롯으로 구성됩니다.
0이 아닌 자동 확장 슬롯으로 구성됩니다.
유휴 슬롯을 사용하도록 구성되며 프로젝트 내에 사용 가능한 유휴 슬롯이 있습니다.
이러한 기준 중 하나 이상을 충족하지 않는 예약에 리소스를 할당하려고 시도하면 Assignment is pending, your project will be executed as on-demand.
메시지가 표시됩니다.
장애 조치 예약에 리소스를 할당할 수 있지만 할당이 보조 위치에서 대기합니다.
필수 권한
예약 할당을 만들려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.
- 관리 프로젝트 및 할당된 담당자에 대한
bigquery.reservationAssignments.create
권한
사전 정의된 다음의 각 IAM 역할에는 이 권한이 포함되어 있습니다.
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery에서 IAM 역할에 대한 상세 설명은 사전 정의된 역할 및 권한을 참조하세요.
예약에 조직 할당
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색 패널에서 용량 관리 섹션으로 이동합니다.
예약 탭을 클릭합니다.
예약 표에서 예약 찾기
작업 옵션을 확장합니다.
할당 만들기를 클릭합니다.
할당 만들기 섹션에서 찾아보기를 클릭합니다.
조직을 찾아보거나 검색하고 선택합니다.
작업 유형 섹션에서 이 예약에 할당할 작업 유형을 선택합니다. 옵션은 다음과 같습니다.
QUERY
CONTINUOUS
(미리보기)PIPELINE
BACKGROUND
ML_EXTERNAL
작업 유형에 관한 자세한 내용은 예약 할당을 참고하세요. 이 기본값은
QUERY
입니다.만들기를 클릭합니다.
SQL
조직을 예약에 할당 삭제하려면 CREATE ASSIGNMENT
DDL 문을 사용합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS ( assignee = 'organizations/ORGANIZATION_ID', job_type = 'JOB_TYPE');
다음을 바꿉니다.
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
조직의 작업을 예약에 할당하려면 bq mk
명령어를 --reservation_assignment
플래그와 함께 사용합니다.
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --assignee_id=ORGANIZATION_ID \ --job_type=JOB_TYPE \ --assignee_type=ORGANIZATION
다음을 바꿉니다.
예약 할당을 만들 때는 쿼리를 실행하기 전 최소 5분 이상 기다립니다. 그렇지 않으면 주문형 가격 책정을 사용하여 쿼리가 청구될 수 있습니다.
예약에 프로젝트 또는 폴더 할당
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색 패널에서 용량 관리 섹션으로 이동합니다.
예약 탭을 클릭합니다.
예약 표에서 예약을 찾습니다.
작업 옵션을 확장합니다.
할당 만들기를 클릭합니다.
할당 만들기 섹션에서 찾아보기를 클릭합니다.
프로젝트 또는 폴더를 찾아보거나 검색하고 선택합니다.
작업 유형 섹션에서 이 예약에 할당할 작업 유형을 선택합니다. 옵션은 다음과 같습니다.
QUERY
CONTINUOUS
(미리보기)PIPELINE
BACKGROUND
ML_EXTERNAL
작업 유형에 관한 자세한 내용은 예약 할당을 참고하세요. 이 기본값은
QUERY
입니다.만들기를 클릭합니다.
SQL
예약에 프로젝트를 할당하려면 CREATE ASSIGNMENT
DDL 문을 사용합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="JOB_TYPE");
다음을 바꿉니다.
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
작업을 예약에 할당하려면 bq mk
명령어를 --reservation_assignment
플래그와 함께 사용합니다.
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --assignee_id=PROJECT_ID \ --job_type=JOB_TYPE \ --assignee_type=PROJECT
다음을 바꿉니다.
Terraform
google_bigquery_reservation_assignment
리소스를 사용합니다.
BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
다음 예에서는 my-reservation
이라는 예약에 프로젝트를 할당합니다.
Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.
Cloud Shell 준비
- Cloud Shell을 실행합니다.
-
Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.
이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.
디렉터리 준비
각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.
-
Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만드세요. 파일 이름에는
.tf
확장자가 있어야 합니다(예:main.tf
). 이 튜토리얼에서는 파일을main.tf
라고 합니다.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
튜토리얼을 따라 하는 경우 각 섹션이나 단계에서 샘플 코드를 복사할 수 있습니다.
샘플 코드를 새로 만든
main.tf
에 복사합니다.필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.
- 환경에 적용할 샘플 매개변수를 검토하고 수정합니다.
- 변경사항을 저장합니다.
-
Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
terraform init
원하는 경우 최신 Google 공급업체 버전을 사용하려면
-upgrade
옵션을 포함합니다.terraform init -upgrade
변경사항 적용
-
구성을 검토하고 Terraform에서 만들거나 업데이트할 리소스가 예상과 일치하는지 확인합니다.
terraform plan
필요에 따라 구성을 수정합니다.
-
다음 명령어를 실행하고 프롬프트에
yes
를 입력하여 Terraform 구성을 적용합니다.terraform apply
Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.
- 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.
예약 할당을 만들 때는 쿼리를 실행하기 전 최소 5분 이상 기다립니다. 그렇지 않으면 주문형 가격 책정을 사용하여 쿼리가 청구될 수 있습니다.
유휴 슬롯만 사용하는 프로젝트를 만들려면 0
슬롯이 할당된 예약을 만들고 이전 단계를 따라 프로젝트를 예약에 할당합니다.
none
에 프로젝트 할당
none
할당은 할당이 없음을 나타냅니다. none
에 할당된 프로젝트는 주문형 가격 책정을 사용합니다.
SQL
none
에 프로젝트를 할당하려면 CREATE ASSIGNMENT
DDL 문을 사용합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="QUERY");
다음을 바꿉니다.
LOCATION
: 주문형 가격 책정을 사용하는 작업의 위치입니다.ASSIGNMENT_ID
: 할당 ID.ID는 프로젝트 및 위치에 고유해야 하고, 소문자 또는 숫자로 시작하고 끝나야 하고, 소문자, 숫자, 대시만 포함해야 합니다.
PROJECT_ID
: 예약에 할당할 프로젝트의 ID
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
프로젝트를 none
에 할당하려면 bq mk
명령어를 --reservation_assignment
플래그와 함께 사용합니다.
bq mk \ --location=LOCATION \ --reservation_assignment \ --reservation_id=none \ --job_type=QUERY \ --assignee_id=PROJECT_ID \ --assignee_type=PROJECT
다음을 바꿉니다.
LOCATION
: 주문형 가격 책정을 사용하는 작업의 위치PROJECT_ID
:none
에 할당할 프로젝트의 ID
Terraform
google_bigquery_reservation_assignment
리소스를 사용합니다.
BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
다음 예에서는 프로젝트를 none
에 할당합니다.
Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.
Cloud Shell 준비
- Cloud Shell을 실행합니다.
-
Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.
이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.
디렉터리 준비
각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.
-
Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만드세요. 파일 이름에는
.tf
확장자가 있어야 합니다(예:main.tf
). 이 튜토리얼에서는 파일을main.tf
라고 합니다.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
튜토리얼을 따라 하는 경우 각 섹션이나 단계에서 샘플 코드를 복사할 수 있습니다.
샘플 코드를 새로 만든
main.tf
에 복사합니다.필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.
- 환경에 적용할 샘플 매개변수를 검토하고 수정합니다.
- 변경사항을 저장합니다.
-
Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
terraform init
원하는 경우 최신 Google 공급업체 버전을 사용하려면
-upgrade
옵션을 포함합니다.terraform init -upgrade
변경사항 적용
-
구성을 검토하고 Terraform에서 만들거나 업데이트할 리소스가 예상과 일치하는지 확인합니다.
terraform plan
필요에 따라 구성을 수정합니다.
-
다음 명령어를 실행하고 프롬프트에
yes
를 입력하여 Terraform 구성을 적용합니다.terraform apply
Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.
- 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.
BigQuery ML 워크로드에 슬롯 할당
다음 BigQuery ML 모델 유형은 외부 서비스를 사용합니다.
ML_EXTERNAL
할당 유형을 사용하여 이러한 서비스를 사용하는 쿼리에 예약된 슬롯을 할당할 수 있습니다. ML_EXTERNAL
할당 유형이 없으면 쿼리 작업이 주문형으로 실행됩니다.
bq mk
명령어를 --reservation_assignment
플래그와 함께 사용하고 --job_type
플래그를 ML_EXTERNAL
로 설정합니다.
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --job_type=ML_EXTERNAL\ --assignee_id=PROJECT_ID \ --assignee_type=PROJECT
다음을 바꿉니다.
ADMIN_PROJECT_ID
: 예약 리소스를 소유하는 프로젝트의 IDLOCATION
: 예약 위치RESERVATION_NAME
: 예약 이름PROJECT_ID
: 이 예약에 할당할 프로젝트의 ID
예약 할당 찾기
필수 권한
특정 프로젝트, 폴더 또는 조직의 예약 할당을 검색하려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.
- 관리 프로젝트에 대한
bigquery.reservationAssignments.list
사전 정의된 다음의 각 IAM 역할에는 이 권한이 포함되어 있습니다.
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery Resource Viewer
BigQuery User
BigQuery에서 IAM 역할에 대한 상세 설명은 사전 정의된 역할 및 권한을 참조하세요.
프로젝트의 예약 할당 찾기
다음을 수행하면 프로젝트, 폴더 또는 조직이 예약에 할당되었는지 확인할 수 있습니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색 패널에서 용량 관리 섹션으로 이동합니다.
예약 탭을 클릭합니다.
예약 표에서 예약을 확장하여 해당 예약에 할당된 리소스를 확인하거나 필터 필드를 사용하여 리소스 이름으로 필터링합니다.
SQL
프로젝트의 쿼리 작업이 할당된 예약을 찾으려면 INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
보기를 쿼리합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
SELECT assignment_id FROM `region-LOCATION`.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT WHERE assignee_id = 'PROJECT_ID' AND job_type = 'JOB_TYPE';
다음을 바꿉니다.
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
프로젝트의 쿼리 작업이 할당된 예약을 찾으려면 bq show
명령어를 --reservation_assignment
플래그와 함께 사용합니다.
bq show \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --job_type=JOB_TYPE \ --assignee_id=PROJECT_ID \ --assignee_type=PROJECT
다음을 바꿉니다.
예약 할당 업데이트
다른 예약으로 할당 이동
한 예약에서 다른 예약으로 할당을 이동할 수 있습니다.
예약 할당을 이동하려면 관리 프로젝트 및 할당된 담당자에 대한 다음 Identity and Access Management(IAM) 권한이 필요합니다.
bigquery.reservationAssignments.create
bigquery.reservationAssignments.delete
다음과 같은 사전 정의된 IAM 역할에는 이러한 권한이 포함되어 있습니다.
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery에서 IAM 역할에 대한 상세 설명은 사전 정의된 역할 및 권한을 참조하세요.
할당을 이동하려면 bq update
명령어를 사용합니다.
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --destination_reservation_id=DESTINATION_RESERVATION \ ADMIN_PROJECT_ID:LOCATION.RESERVATION_NAME.ASSIGNMENT_ID
다음을 바꿉니다.
ADMIN_PROJECT_ID
: 예약 리소스를 소유하는 프로젝트의 IDLOCATION
: 새 예약의 위치입니다.RESERVATION_NAME
: 할당을 이동할 원본 예약입니다.DESTINATION_RESERVATION
: 할당을 이동할 예약입니다.ASSIGNMENT_ID
: 할당 ID.할당 ID를 가져오려면 프로젝트의 예약 할당 나열을 참조하세요.
예약 할당 삭제
예약 할당을 삭제하여 예약에서 프로젝트를 삭제할 수 있습니다. 프로젝트가 어떤 예약에도 할당되지 않은 경우 상위 폴더 또는 조직에서 모든 할당을 상속하거나, 상위 할당이 없는 경우 주문형 가격 책정을 사용합니다.
예약 할당을 삭제하면 해당 예약의 슬롯으로 실행 중인 작업이 완료될 때까지 계속 실행됩니다.
필수 권한
예약 할당을 삭제하려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.
- 관리 프로젝트 및 할당된 담당자에 대한
bigquery.reservationAssignments.delete
권한
사전 정의된 다음의 각 IAM 역할에는 이 권한이 포함되어 있습니다.
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
예약에서 프로젝트 삭제
프로젝트를 예약에서 삭제하려면 다음 단계를 따르세요.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색 패널에서 용량 관리 섹션으로 이동합니다.
예약 탭을 클릭합니다.
예약 표에서 예약을 확장하여 프로젝트를 찾습니다.
작업 옵션을 확장합니다.
삭제를 클릭합니다.
SQL
DROP ASSIGNMENT
DDL 문을 사용합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
DROP ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;
다음을 바꿉니다.
ADMIN_PROJECT_ID
: 예약 리소스를 소유하는 관리 프로젝트의 프로젝트 IDLOCATION
: 예약 위치RESERVATION_NAME
: 예약 이름ASSIGNMENT_ID
: 할당 ID.할당 ID를 찾으려면 프로젝트의 예약 할당 나열을 참조하세요.
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
예약에서 프로젝트를 삭제하려면 bq rm
명령어를 --reservation_assignment
플래그와 함께 실행합니다.
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID
다음을 바꿉니다.
ADMIN_PROJECT_ID
: 예약 리소스를 소유하는 프로젝트의 IDLOCATION
: 예약 위치RESERVATION_NAME
: 예약 이름ASSIGNMENT_ID
: 할당 ID.할당 ID를 가져오려면 프로젝트의 예약 할당 찾기를 참조하세요.