Cloud Run Functions memungkinkan Anda membuat layanan tanpa server yang mengkueri dan menayangkan data Spanner melalui HTTP. Dalam tutorial ini, Anda akan menulis dan men-deploy fungsi yang dipicu HTTP yang mengambil rekaman dari database Spanner.
Tujuan
Menulis, men-deploy, dan memicu fungsi HTTP yang mengakses Spanner.
Biaya
Dokumen ini menggunakan Spanner dan Cloud Run, yang merupakan komponen yang dapat ditagih Google Cloud.
Untuk mengetahui informasi tentang biaya penggunaan Spanner, lihat Harga Spanner.
Untuk mengetahui informasi tentang biaya penggunaan Cloud Run, termasuk pemanggilan gratis, lihat Harga Cloud Run.
Sebelum memulai
Dokumen ini mengasumsikan bahwa Anda memiliki instance Spanner bernama
test-instancedan database bernamaexample-dbyang menggunakan skema aplikasi musik. Untuk petunjuk tentang cara membuat instance dan database dengan skema aplikasi musik, lihat Panduan memulai menggunakan konsol atau tutorial Memulai di Node.js, atau Python.Aktifkan Cloud Run dan Cloud Build API.
Instal dan lakukan inisialisasi gcloud CLI.
Jika Anda sudah menginstal gcloud CLI, update dengan menjalankan perintah berikut:
gcloud components updateSiapkan lingkungan pengembangan:
Node.js
Lihat panduan penyiapan Node.js.
Python
Lihat panduan penyiapan Python.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk men-deploy layanan Cloud Run dari sumber, minta administrator Anda untuk memberi Anda peran IAM berikut:
- Cloud Run Source Developer (
roles/run.sourceDeveloper) di project Anda - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) di layanan Cloud Run - Pengguna Akun Layanan (
roles/iam.serviceAccountUser) di identitas layanan - Spanner Admin (
roles/spanner.admin) di instance Spanner
Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika layanan Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Cloud Client Libraries, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat izin deployment dan mengelola akses.
Peran untuk akun layanan Cloud Build
Anda atau administrator Anda harus memberikan peran IAM berikut ke akun layanan Cloud Build.
Klik untuk melihat peran yang diperlukan untuk akun layanan Cloud Build
Cloud Build secara otomatis menggunakan akun layanan default Compute Engine sebagai akun layanan Cloud Build default untuk mem-build kode sumber dan resource Cloud Run Anda, kecuali jika Anda mengganti perilaku ini. Agar
Cloud Build dapat mem-build sumber Anda, minta administrator Anda untuk memberikan
Cloud Run Builder
(roles/run.builder) ke akun layanan default Compute Engine
di project Anda:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@ \ --role=roles/run.builder
Ganti PROJECT_NUMBER dengan nomor project Anda Google Cloud, dan PROJECT_ID dengan ID project Anda Google Cloud. Untuk mengetahui petunjuk mendetail tentang cara menemukan ID project dan nomor project Anda,
lihat Membuat
dan mengelola project.
Pemberian peran builder Cloud Run ke akun layanan default Compute Engine memerlukan waktu beberapa menit untuk diterapkan.
Peran untuk identitas layanan
Anda harus memberikan peran IAM berikut ke identitas layanan yang Anda gunakan untuk layanan Cloud Run.
- Spanner Database Reader (
roles/spanner.databaseReader)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Menyiapkan aplikasi
Buat clone repositori aplikasi contoh ke komputer lokal Anda:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitAtau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.gitAtau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Beralihlah ke direktori yang berisi kode contoh Cloud Run Functions untuk mengakses Spanner:
Node.js
cd nodejs-docs-samples/functions/spannerPython
cd python-docs-samples/functions/spannerLihat kode contoh:
Node.js
Python
Fungsi ini mengirim kueri SQL untuk mengambil semua data
Albumsdari database Anda. Fungsi ini dijalankan saat Anda membuat permintaan HTTP ke endpoint fungsi.
Menerapkan fungsi
Untuk men-deploy fungsi dengan pemicu HTTP,
jalankan perintah berikut di direktori spanner:
Node.js
gcloud run deploy nodejs-spanner-function \
--source . \
--region REGION \
--function spannerQuickstart \
--base-image RUNTIME_ID \
--log-httpPython
gcloud run deploy python-spanner-function \
--source . \
--region REGION \
--function spanner_read_data \
--base-image RUNTIME_ID \
--log-httpGanti:
REGION dengan nama Google Cloud region tempat Anda ingin men-deploy fungsi (misalnya,
us-west1).RUNTIME_ID dengan ID runtime yang sesuai (misalnya,
nodejs22). Lihat Runtime bahasa dan image dasar yang didukung.
Deployment fungsi mungkin memerlukan waktu hingga dua menit.
Catat nilai url yang ditampilkan saat fungsi Anda selesai di-deploy. Anda akan menggunakannya saat memicu fungsi.
Anda dapat melihat fungsi yang di-deploy di halaman Cloud Run di Google Cloud konsol. Anda juga dapat membuat dan mengedit fungsi di halaman tersebut, serta mendapatkan detail dan diagnostik untuk fungsi Anda.
Memicu fungsi
Buat permintaan HTTP ke fungsi Anda:
curl URL
Ganti URL dengan nilai URL yang ditampilkan saat fungsi Anda selesai di-deploy.
Anda akan melihat output yang menampilkan hasil kueri SQL, dengan asumsi Anda telah menyelesaikan tutorial Memulai dan mengisi database:
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
Anda juga dapat membuka URL fungsi di browser untuk melihat hasil kueri SQL.
Pembersihan
Agar tidak menimbulkan biaya tambahan pada Google Cloud akunAnda untuk resource Spanner dan Cloud Run Functions yang digunakan dalam dokumen ini:
Hapus instance:
gcloud CLI instances delete test-instanceHapus layanan Cloud Run yang Anda deploy dalam tutorial ini:
Node.js
gcloud run services delete nodejs-spanner-functionPython
gcloud run services delete python-spanner-function