Crea e implementa Cloud Run Function HTTP con Node.js

En este documento, se explica el proceso para crear una función de HTTP de Cloud Run Function simple. Este es uno de los dos tipos de Cloud Run Functions:

  • Una función de HTTP que se invoca a partir de solicitudes HTTP estándar.
  • La otra es una función controlada por eventos que se activa mediante eventos en la infraestructura de tu nube, como mensajes en un tema de Cloud Pub/Sub o cambios en un bucket de Cloud Storage.

Para obtener más detalles, consulta Escribir funciones HTTP y Escribir funciones controladas por eventos.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.

    Enable the APIs

  8. Instala e inicializa gcloud CLI
  9. Instala y actualiza componentes de gcloud.
    gcloud components update
  10. Prepara tu entorno de desarrollo.

    Ir a la guía de configuración de Node.js

Crea tu función

  1. Crea un directorio en tu sistema local para el código de función:

    Linux o Mac OS X

    mkdir ~/helloworld
    cd ~/helloworld
    

    Windows

    mkdir %HOMEPATH%\helloworld
    cd %HOMEPATH%\helloworld
    
  2. Crea un archivo index.js en el directorio helloworld con el siguiente contenido:

    const functions = require('@google-cloud/functions-framework');
    
    // Register an HTTP function with the Functions Framework that will be executed
    // when you make an HTTP request to the deployed function's endpoint.
    functions.http('helloGET', (req, res) => {
      res.send('Hello World!');
    });

    Esta función de ejemplo muestra una respuesta "Hello World!" a todas las solicitudes.

Especificar dependencias

Las dependencias en Node.js se administran con npm y se expresan en un archivo de metadatos llamado package.json. Puedes crear este archivo de forma manual o con el comando de npm.

  • Para crear tu archivo package.json con el comando npm, sigue estos pasos:

    1. Ejecuta el comando npm init desde el directorio helloworld. Presiona Enter para aceptar la respuesta predeterminada a sus preguntas.

      npm init
      
    2. Edita el archivo package.json para agregar una dependencia de funciones y framework:

      "dependencies": {
        "@google-cloud/functions-framework": "^3.1.0"
      }
      
  • Si prefieres crear el archivo package.json de forma manual, copia el siguiente contenido en él:

{
  "name": "nodejs-docs-samples-functions-hello-world-get",
  "version": "0.0.1",
  "private": true,
  "license": "Apache-2.0",
  "author": "Google Inc.",
  "repository": {
    "type": "git",
    "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
  },
  "engines": {
    "node": ">=16.0.0"
  },
  "scripts": {
    "test": "c8 mocha -p -j 2 test/*.test.js --timeout=6000 --exit"
  },
  "dependencies": {
    "@google-cloud/functions-framework": "^3.1.0"
  },
  "devDependencies": {
    "c8": "^10.0.0",
    "gaxios": "^6.0.0",
    "mocha": "^10.0.0",
    "wait-port": "^1.0.4"
  }
}

Muchas bibliotecas cliente de Node.js están disponibles para su uso con productos de Google Cloud y se pueden instalar como dependencias.

Compila y prueba la función de forma local

Para probar tu función de forma local antes de implementarla, debes instalar Functions Framework de forma local y, luego, ejecutar la función.

  1. Ejecuta el siguiente comando desde el directorio helloworld para instalar Functions Framework en tu máquina local:

    npm install @google-cloud/functions-framework
    
  2. Ejecuta este comando desde el directorio helloworld para ejecutar la función de forma local:

    npx @google-cloud/functions-framework --target=helloGET
    
  3. Para probar tu función, visita http://localhost:8080 en un navegador o ejecuta curl localhost:8080 desde otra ventana.

    Consulta Envía solicitudes a funciones locales para obtener más detalles.

La función muestra el mensaje “Hello, World!”.

Implemente su función

Para implementar tu función, ejecuta el comando gcloud functions deploy en el directorio helloworld:

gcloud functions deploy hello-node-function \
  --gen2 \
  --runtime=nodejs20 \
  --region=REGION \
  --source=. \
  --entry-point=helloGET \
  --trigger-http \
  --allow-unauthenticated

Reemplaza REGION por el nombre de la región de Google Cloud en la que deseas implementar tu función (por ejemplo, us-west1).

Esto implementa tu función de muestra con el entorno de ejecución de nodejs20 en la región que elegiste.

La marca opcional --allow-unauthenticated te permite acceder a tu función sin autenticación.

Prueba la función implementada

  1. Después de que se implementa la función, toma nota de la propiedad uri del resultado del comando gcloud functions deploy o recupérala con el siguiente comando:

      gcloud functions describe hello-node-function \
        --region=REGION
    

    Reemplaza REGION por el nombre de la región de Google Cloud en la que implementaste tu función (por ejemplo, us-west1).

  2. Visita esta URL en tu navegador o con el siguiente comando de curl:

    curl FUNCTION_URL
    

    Reemplaza FUNCTION_URL por la propiedad uri que acabas de recuperar.

    La función muestra un mensaje "Hello World!".

Visualiza los registros de tu función

Visualiza registros con la herramienta de línea de comandos

Puedes revisar los registros de tu función con la IU de Cloud Logging o a través de Google Cloud CLI.

Para ver los registros de tu función con la CLI de gcloud, usa el comando gcloud functions logs read:

    gcloud functions logs read \
      --gen2 \
      --region=REGION \
      --limit=10 \
      hello-node-function

Reemplaza REGION por el nombre de la región de Google Cloud en la que implementaste tu función (por ejemplo, us-west1).

El resultado se ve de la manera siguiente:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:42:24.956
LOG:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:42:01.692
LOG:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:47.711
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello--node--function-1" on port 8080.

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:46.542
LOG:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:27.390
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello--node--function-1" on port 8080.

Visualiza registros con el panel de registros

Para ver los registros de tu función con el panel de registro, abre el Página de descripción general de Cloud Run Functions, haz clic en el nombre de tu función en la lista y, luego, en la pestaña Registros.