이 튜토리얼에서는 BigQuery에 쿼리를 제출하는 HTTP Cloud Run 함수를 작성하는 방법을 보여줍니다.
시작하기 전에
설정 페이지에 설명된 대로 Cloud Run용 새 프로젝트를 설정했는지 확인합니다.
Artifact Registry, Cloud Build, Cloud Run Admin API API를 사용 설정합니다.
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
프로젝트에서 인증되지 않은 호출을 제한하는 도메인 제한 조직 정책이 적용되는 경우 비공개 서비스 테스트의 설명대로 배포된 서비스에 액세스해야 합니다.
필요한 역할
소스에서 Cloud Run 서비스를 배포하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Cloud Run 서비스에 대한 Cloud Run 소스 개발자 (
roles/run.sourceDeveloper
) 역할 -
Cloud Run 서비스에 대한 서비스 사용량 소비자 (
roles/serviceusage.serviceUsageConsumer
) 역할 -
서비스 ID에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
) 역할 -
서비스 ID의 BigQuery 작업 사용자 (
roles/bigquery.jobUser
)
Cloud Run과 연결된 IAM 역할 및 권한 목록은 Cloud Run IAM 역할 및 Cloud Run IAM 권한을 참조하세요. Cloud Run 서비스가 Cloud 클라이언트 라이브러리와 같은Google Cloud API와 상호작용하는 경우에는 서비스 ID 구성 가이드를 참고하세요. 역할 부여에 대한 자세한 내용은 배포 권한 및 액세스 관리를 참고하세요.
서비스 계정 역할
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/cloudbuild.builds.builder
PROJECT_NUMBER
를 Google Cloud프로젝트 번호로, PROJECT_ID
를 Google Cloud프로젝트 ID로 바꿉니다. 프로젝트 ID와 프로젝트 번호를 찾는 방법은 프로젝트 만들기 및 관리를 참고하세요.
Compute Engine 기본 서비스 계정에 Cloud Build 서비스 계정 역할을 부여하려면 전파하는 데 몇 분 정도 걸립니다.
애플리케이션 준비
샘플 애플리케이션 저장소를 로컬 머신에 클론합니다.
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풉니다.
샘플 코드가 있는 디렉토리로 변경합니다.
cd nodejs-docs-samples/functions/v2/helloBigQuery
다음 샘플 코드를 살펴봅니다. 이 샘플은 지정된 데이터 세트에서 최소 400회 이상 발생하는 단어에 대한 쿼리를 제출하고 결과를 반환합니다.
함수 배포하기
HTTP 트리거를 사용하여 함수를 배포하려면 다음 단계를 따르세요.
샘플 코드가 포함된 디렉터리에서 다음 명령어를 실행합니다.
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION \ --allow-unauthenticated
다음과 같이 바꿉니다.
FUNCTION을 배포하려는 함수의 이름(예:
my-bigquery-function
)으로 바꿉니다. 이 매개변수를 완전히 생략할 수 있지만 생략하면 이름을 입력하라는 메시지가 표시됩니다.FUNCTION_ENTRYPOINT를 소스 코드에 있는 함수의 진입점으로 바꿉니다. 이는 함수가 실행될 때 Cloud Run이 실행하는 코드입니다. 이 플래그의 값은 소스 코드에 있는 함수 이름 또는 정규화된 클래스 이름이어야 합니다. 샘플 함수에 지정해야 하는 진입점은
helloBigQuery
입니다.BASE_IMAGE를 함수의 기본 이미지 환경(예:
nodejs22
)으로 바꿉니다. 기본 이미지 및 각 이미지에 포함된 패키지에 관한 자세한 내용은 런타임 기본 이미지를 참고하세요.REGION을 함수를 배포하려는 Google Cloud 리전으로 바꿉니다. 예를 들면
us-central1
입니다.
선택사항:
- 웹훅과 같이 공개 HTTP 함수를 만드는 경우
--allow-unauthenticated
플래그를 지정합니다. 이 플래그는 Cloud Run IAM 호출자 역할을 특수 식별자allUser
에 할당합니다. 서비스를 만든 후 나중에 IAM을 사용하여 이 설정을 수정할 수 있습니다.
함수 테스트
함수 배포가 완료되면
uri
속성을 복사합니다.브라우저에서 이 URI에 방문합니다.
쿼리 기준과 일치하는 단어 목록과 각 단어가 대상 데이터 세트에 표시되는 횟수를 볼 수 있습니다.
삭제
Cloud Run에서는 서비스를 사용하지 않을 때 비용이 청구되지 않지만 Artifact Registry에 컨테이너 이미지를 저장하는 데 요금이 청구될 수 있습니다. 비용이 청구되지 않도록 컨테이너 이미지를 삭제하거나 Google Cloud 프로젝트를 삭제할 수 있습니다. Google Cloud 프로젝트를 삭제하면 프로젝트 내에서 사용되는 모든 리소스에 대한 비용 청구가 중지됩니다.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.