목표
Spanner에 액세스하는 HTTP 함수를 작성, 배포, 트리거합니다.
비용
이 문서에서는 비용이 청구될 수 있는 Google Cloud구성요소인 Spanner 및 Cloud Run을 사용합니다.
Spanner 사용 비용에 대한 자세한 내용은 Spanner 가격 책정을 참조하세요.
무료 호출을 포함한 Cloud Run 사용 비용에 대한 자세한 내용은 Cloud Run 가격 책정을 참조하세요.
시작하기 전에
이 문서에서는
test-instance
라는 Spanner 인스턴스와 음악 애플리케이션 스키마를 사용하는example-db
라는 데이터베이스가 있다고 가정합니다. 음악 애플리케이션 스키마를 사용하여 인스턴스와 데이터베이스를 만드는 방법에 대한 자세한 내용은 빠른 시작: 콘솔 사용 또는 Node.js 또는 Python 시작하기 튜토리얼을 참조하세요.Cloud Run 및 Cloud Build API를 사용 설정합니다.
-
gcloud CLI가 이미 설치되어 있으면 다음 명령어를 실행하여 업데이트합니다.
gcloud components update
개발 환경을 준비합니다.
Node.js
Node.js 설정 가이드를 참조하세요.
Python
Python 설정 가이드를 참조하세요.
애플리케이션 준비
샘플 앱 저장소를 로컬 머신에 클론합니다.
Spanner에 액세스하는 데 사용되는 Cloud Run Functions 샘플 코드가 포함된 디렉터리로 변경합니다.
Node.js
cd nodejs-docs-samples/functions/spanner
Python
cd python-docs-samples/functions/spanner
다음 샘플 코드를 살펴봅니다.
Node.js
Python
함수는 SQL 쿼리를 전송하여 데이터베이스의 모든
Albums
데이터를 가져옵니다. 이 함수는 함수의 엔드포인트로 HTTP 요청을 보낼 때 실행됩니다.
함수 배포
HTTP 트리거를 사용하여 함수를 배포하려면 spanner
디렉터리에서 다음 명령어를 실행합니다.
Node.js
gcloud run deploy nodejs-spanner-function \
--source . \
--region REGION \
--function spannerQuickstart \
--base-image RUNTIME_ID \
--log-http
Python
gcloud run deploy python-spanner-function \
--source . \
--region REGION \
--function spanner_read_data \
--base-image RUNTIME_ID \
--log-http
다음과 같이 바꿉니다.
REGION을 함수를 배포할 Google Cloud 리전의 이름으로 바꿉니다(예:
us-west1
).RUNTIME_ID를 적절한 런타임 ID로 바꿉니다(예:
nodejs22
). 지원되는 언어 런타임 및 기본 이미지를 참조하세요.
함수 배포에 최대 2분이 소요될 수 있습니다.
함수 배포가 끝나면 반환된 url
값을 기록합니다. 이는 함수를 트리거할 때 사용됩니다.
Google Cloud 콘솔의 Cloud Run 페이지에서 배포한 함수를 볼 수 있습니다. 이 페이지에서 함수를 만들고 수정할 수도 있으며 함수에 관한 세부정보와 진단 정보를 확인할 수 있습니다.
함수 트리거
함수에 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 Run Functions 리소스에 대한 추가 비용이 Google Cloud 계정에 청구되지 않게 하려면 다음 안내를 따르세요.
인스턴스를 삭제합니다.
gcloud CLI instances delete test-instance
이 튜토리얼에서 배포한 Cloud Run 서비스를 삭제합니다.
Node.js
gcloud run services delete nodejs-spanner-function
Python
gcloud run services delete python-spanner-function