Buat fungsi Cloud Run yang menggunakan BigQuery untuk mengirimkan kueri dan menampilkan hasil.

Tutorial ini menunjukkan cara menulis fungsi HTTP Cloud Run yang mengirimkan kueri ke BigQuery.

Menyiapkan aplikasi

  1. Buat clone repositori aplikasi contoh ke komputer lokal Anda:

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    

    Atau, download contoh sebagai file ZIP dan ekstrak.

  2. Ubah ke direktori yang berisi kode contoh:

    cd nodejs-docs-samples/functions/v2/helloBigQuery
    
  3. Lihat kode contoh: Sampel mengirimkan kueri untuk kata yang terjadi setidaknya 400 kali dalam set data yang ditentukan, dan menampilkan hasilnya.

    // Import the Google Cloud client library
    const {BigQuery} = require('@google-cloud/bigquery');
    const bigquery = new BigQuery();
    
    const functions = require('@google-cloud/functions-framework');
    
    /**
     * HTTP Cloud Function that returns BigQuery query results
     *
     * @param {Object} req Cloud Function request context.
     * @param {Object} res Cloud Function response context.
     */
    functions.http('helloBigQuery', async (req, res) => {
      // Define the SQL query
      // Queries the public Shakespeare dataset using named query parameter
      const sqlQuery = `
          SELECT word, word_count
                FROM \`bigquery-public-data.samples.shakespeare\`
                WHERE corpus = @corpus
                AND word_count >= @min_word_count
                ORDER BY word_count DESC`;
    
      const options = {
        query: sqlQuery,
        // Location must match that of the dataset(s) referenced in the query.
        location: 'US',
        params: {corpus: 'romeoandjuliet', min_word_count: 400},
      };
    
      // Execute the query
      try {
        const [rows] = await bigquery.query(options);
        // Send the results
        res.status(200).send(rows);
      } catch (err) {
        console.error(err);
        res.status(500).send(`Error querying BigQuery: ${err}`);
      }
    });

Men-deploy fungsi

Untuk men-deploy fungsi dengan pemicu HTTP:

  1. Jalankan perintah berikut di direktori yang berisi kode contoh:

    gcloud run deploy FUNCTION \
       --source . \
       --function FUNCTION_ENTRYPOINT \
       --base-image BASE_IMAGE \
       --region REGION \
       --allow-unauthenticated

    Ganti:

    • FUNCTION dengan nama fungsi yang Anda deploy, misalnya my-bigquery-function. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika menghilangkannya.

    • FUNCTION_ENTRYPOINT dengan titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang dijalankan Cloud Run saat fungsi Anda berjalan. Nilai flag ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber Anda. Titik entri yang harus Anda tentukan untuk fungsi contoh adalah helloBigQuery.

    • BASE_IMAGE dengan lingkungan image dasar untuk fungsi Anda, misalnya, nodejs22. Untuk mengetahui detail tentang image dasar dan paket yang disertakan dalam setiap image, lihat Image dasar runtime.

    • REGION dengan Google Cloud region tempat Anda ingin men-deploy fungsi Anda. Contohnya, europe-west1

    Opsional:

    • Jika Anda membuat fungsi HTTP publik, misalnya webhook, tentukan tanda --allow-unauthenticated. Flag ini menetapkan peran Cloud Run IAM Invoker ke ID khusus allUser. Anda dapat menggunakan IAM untuk mengedit setelan ini nanti setelah membuat layanan.

Menguji fungsi

  1. Setelah fungsi selesai di-deploy, salin properti uri.

  2. Kunjungi URI ini di browser Anda.

    Anda akan melihat daftar kata yang cocok dengan kriteria kueri, dan berapa kali setiap kata muncul di set data target.