목표
Spanner에 액세스하는 HTTP Cloud 함수를 작성, 배포, 트리거합니다.
비용
이 문서에서는 비용이 청구될 수 있는 Google Cloud 구성요소인 Spanner와 Cloud Functions를 사용합니다.
Spanner 사용 비용에 대한 자세한 내용은 Spanner 가격 책정을 참조하세요.
무료 호출을 비롯한 Cloud Functions 사용 비용에 대한 자세한 내용은 Cloud Functions 가격 책정을 참조하세요.
시작하기 전에
이 문서에서는
test-instance
라는 Spanner 인스턴스와 음악 애플리케이션 스키마를 사용하는example-db
라는 데이터베이스가 있다고 가정합니다. 음악 애플리케이션 스키마를 사용하여 인스턴스와 데이터베이스를 만드는 방법에 대한 자세한 내용은 빠른 시작: 콘솔 사용 또는 Go, 자바, Node.js, Python 시작하기 튜토리얼을 참조하세요.Cloud Functions 및 Cloud Build API를 사용 설정합니다.
-
gcloud CLI가 이미 설치되어 있으면 다음 명령어를 실행하여 업데이트합니다.
gcloud components update
개발 환경을 준비합니다.
애플리케이션 준비
샘플 앱 저장소를 로컬 머신에 클론합니다.
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
자바
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
Spanner에 액세스하기 위한 Cloud Functions 샘플 코드가 있는 디렉터리로 변경합니다.
Node.js
cd nodejs-docs-samples/functions/spanner/
Python
cd python-docs-samples/functions/spanner/
Go
cd golang-samples/functions/spanner/
자바
cd java-docs-samples/functions/spanner/
다음 샘플 코드를 살펴봅니다.
Node.js
Python
Go
Java
함수는 SQL 쿼리를 전송하여 데이터베이스의 모든
Albums
데이터를 가져옵니다. 이 함수는 함수의 엔드포인트로 HTTP 요청을 보낼 때 실행됩니다.
함수 배포
HTTP 트리거를 사용하여 함수를 배포하려면 spanner
디렉터리에서 다음 명령어를 실행합니다.
Node.js
gcloud functions deploy nodejs-spanner-function \ --gen2 \ --runtime=nodejs20 \ --region=REGION
\ --source=. \ --entry-point=spannerQuickstart
--trigger-http
--runtime
플래그를 사용하여 함수를 실행할 지원되는 Node.js 버전의 런타임 ID를 지정합니다.
Python
gcloud functions deploy python-spanner-function \ --gen2 \ --runtime=python312 \ --region=REGION
\ --source=. \ --entry-point=spanner_read_data
--trigger-http
--runtime
플래그를 사용하여 함수를 실행할 지원되는 Python 버전의 런타임 ID를 지정합니다.
Go
gcloud functions deploy go-spanner-function \ --gen2 \ --runtime=go121 \ --region=REGION
\ --source=. \ --entry-point=HelloSpanner
--trigger-http
--runtime
플래그를 사용하여 함수를 실행할 지원되는 Go 버전의 런타임 ID를 지정합니다.
Java
gcloud functions deploy java-spanner-function \ --gen2 \ --runtime=java17 \ --region=REGION
\ --source=. \ --entry-point=functions.HelloSpanner \ --memory=512MB
--trigger-http
--runtime
플래그를 사용하여 함수를 실행할 지원되는 Java 버전의 런타임 ID를 지정합니다.
REGION을 함수를 배포할 Google Cloud 리전 이름으로 바꿉니다(예: us-west1
).
함수 배포에 최대 2분이 소요될 수 있습니다.
함수 배포가 끝나면 반환된 url
값을 기록합니다. 이는 함수를 트리거할 때 사용됩니다.
Google Cloud Console의 Cloud Functions 페이지에서 배포한 함수를 확인할 수 있습니다. 이 페이지에서 함수를 만들고 수정할 수도 있으며 함수에 관한 세부정보와 진단 정보를 확인할 수 있습니다.
함수 트리거
함수에 HTTP 요청을 보냅니다.
curl URL
URL을 함수 배포가 끝난 후 반환된 URL 값으로 바꿉니다.
시작하기 가이드를 따라 작업을 수행하고 데이터베이스를 채웠다면 SQL 쿼리 결과를 나타내는 출력이 표시됩니다.
SingerId: 2, AlbumId: 2, AlbumTitle: Forever Hold Your Peace
SingerId: 1, AlbumId: 2, AlbumTitle: Go, Go, Go
SingerId: 2, AlbumId: 1, AlbumTitle: Green
SingerId: 2, AlbumId: 3, AlbumTitle: Terrified
SingerId: 1, AlbumId: 1, AlbumTitle: Total Junk
브라우저에서 함수의 URL을 방문하여 SQL 쿼리 결과를 볼 수도 있습니다.
삭제
이 문서에서 사용한 Spanner 및 Cloud Functions 리소스에 대한 Google Cloud 계정에 추가 요금이 부과되지 않도록 하려면 다음을 수행합니다.
인스턴스를 삭제합니다.
gcloud spanner instances delete test-instance
배포한 함수를 삭제합니다.
Node.js
gcloud functions delete nodejs-spanner-function
Python
gcloud functions delete python-spanner-function
Go
gcloud functions delete go-spanner-function
Java
gcloud functions delete java-spanner-function