Crea una función de Cloud Run que use BigQuery para enviar una consulta y devolver resultados.

En este tutorial se muestra cómo escribir una función HTTP de Cloud Run que envía una consulta a BigQuery.

Preparar la aplicación

  1. Clona el repositorio de la aplicación de muestra en tu máquina local:

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

    También puedes descargar el archivo de ejemplo como archivo zip y extraerlo.

  2. Accede al directorio que contiene el código de muestra:

    cd nodejs-docs-samples/functions/v2/helloBigQuery
    
  3. Echa un vistazo al código de muestra. El ejemplo envía una consulta de palabras que aparecen al menos 400 veces en el conjunto de datos especificado y devuelve el resultado.

    // 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}`);
      }
    });

Desplegar la función

Para desplegar la función con un activador HTTP, sigue estos pasos:

  1. Ejecuta el siguiente comando en el directorio que contiene el código de ejemplo:

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

    Sustituye:

    • FUNCTION con el nombre de la función que vas a implementar, por ejemplo, my-bigquery-function. Puedes omitir este parámetro por completo, pero se te pedirá el nombre si lo haces.

    • FUNCTION_ENTRYPOINT con el punto de entrada de tu función en el código fuente. Este es el código que ejecuta Cloud Run cuando se ejecuta tu función. El valor de esta marca debe ser un nombre de función o un nombre de clase completo que exista en el código fuente. El punto de entrada que debes especificar para la función de ejemplo es helloBigQuery.

    • BASE_IMAGE con el entorno de imagen base de tu función, por ejemplo, nodejs22. Para obtener información sobre las imágenes base y los paquetes incluidos en cada imagen, consulta Imágenes base de los entornos de ejecución.

    • REGION con la Google Cloud región en la que quieras desplegar tu función. Por ejemplo, europe-west1.

    Optional:

    • Si vas a crear una función HTTP pública, como un webhook, especifica la marca --allow-unauthenticated. Esta marca asigna el rol de invocador de gestión de identidades y accesos de Cloud Run al identificador especial allUser. Puedes usar la gestión de identidades y accesos para editar esta opción más adelante, después de crear el servicio.

Probar función

  1. Cuando la función termine de implementarse, copia la propiedad uri.

  2. Visita este URI en tu navegador.

    Verás una lista de las palabras que coinciden con los criterios de la consulta y el número de veces que aparece cada palabra en el conjunto de datos de destino.