Comienza a usar funciones de Cloud Run (HTTP)

1. Introducción

Descripción general

Cloud Run Functions ofrece una nueva forma de implementar cargas de trabajo mediante los ya conocidos paradigmas de eventos de GCF y la firma de funciones. En lugar de usar nuestro proceso de compilación definido y la configuración de implementación, las funciones de Cloud Run te brindan control directo sobre el Service subyacente creado en Cloud Run.

Con las funciones de Cloud Run, proporcionamos la UX sencilla de la implementación de código fuente de Cloud Run, lo que brinda a los desarrolladores control completo sobre sus cargas de trabajo con los parámetros de configuración de Cloud Run.

En este codelab, se utilizan muestras de nodejs que se indican en los siguientes ejemplos. Sin embargo, puedes usar las muestras de código de Cloud Functions (2nd gen) en el lenguaje que prefieras:

Qué aprenderás

  • Cómo implementar una función de Cloud Run que se activa mediante una solicitud HTTP

2. Configura variables de entorno y habilita las APIs

Actualiza gcloud CLI

Primero, debes tener instalada una versión reciente de gcloud CLI. Para actualizar la CLI, ejecuta el siguiente comando:

gcloud components update

Configura variables de entorno

Puedes establecer variables de entorno que se usarán en este codelab.

PROJECT_ID=<YOUR_PROJECT_ID>
REGION=<YOUR_REGION, e.g. us-central1>

gcloud config set project $PROJECT_ID
SERVICE_NAME=crf-http-codelab

Habilita las APIs

Antes de comenzar a usar este codelab, debes habilitar varias APIs. Este codelab requiere el uso de las siguientes APIs. Para habilitar esas APIs, ejecuta el siguiente comando:

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    storage.googleapis.com \
    artifactregistry.googleapis.com

3. Crea una función de HTTP

Primero, crea un directorio para el código fuente y desplázate a ese directorio con el comando cd.

mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_

Luego, crea un archivo package.json con el siguiente contenido:

{
    "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
    }
}

A continuación, crea un archivo index.js con el siguiente contenido:

const functions = require("@google-cloud/functions-framework");

functions.http("helloHttp", (req, res) => {
    res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});

4. Implementa la función

Ahora puedes implementar la función de Cloud Run ejecutando el siguiente comando:

gcloud beta run deploy $SERVICE_NAME \
      --source . \
      --function helloHttp \
      --region us-central1 \
      --no-allow-unauthenticated

Este comando usa buildpacks para transformar el código fuente de tu función en una imagen de contenedor lista para la producción.

Ten en cuenta lo siguiente:

  • La marca –source se usa para indicarle a Cloud Run que compile la función en un servicio ejecutable basado en contenedores.
  • El marcador –function (nuevo) se usa para establecer que el punto de entrada del nuevo servicio sea la firma de la función que quieres que se invoque.
  • (opcional) el comando –no-allow-unauthenticated para evitar que tu función se pueda invocar de forma pública

5. Prueba la función

Cuando se complete la implementación, verás la URL de servicio. Para invocar la función, debes enviar una solicitud autenticada con tu token de identidad o el token de identidad de un principio que tenga el rol de Invocador de Cloud Run, como se muestra a continuación:

# get the Service URL
SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')"

# invoke the service
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

6. ¡Felicitaciones!

¡Felicitaciones por completar el codelab!

Te recomendamos que revises la documentación sobre funciones de Cloud Run.

Temas abordados

  • Cómo implementar una función de Cloud Run que se activa mediante una solicitud HTTP

7. Limpia

Para evitar cargos involuntarios (por ejemplo, si los servicios de Cloud Run se invocan de forma involuntaria más veces que tu asignación mensual de invocación de Cloud Run en el nivel gratuito), puedes borrar Cloud Run o el proyecto que creaste en el paso 2.

Para borrar la función de Cloud Run, ve a la consola de Cloud Run en https://console.cloud.google.com/run y borra el servicio crf-http-codelab.

Si decides borrar el proyecto completo, puedes ir a https://console.cloud.google.com/cloud-resource-manager, seleccionar el proyecto que creaste en el paso 2 y elegir Borrar. Si borras el proyecto, deberás cambiar los proyectos en tu SDK de Cloud. Para ver la lista de todos los proyectos disponibles, ejecuta gcloud projects list.