1. Introducción
Descripción general
Cloud Run Functions es una nueva forma de implementar cargas de trabajo con los paradigmas de eventos y la firma de funciones conocidos de GCF. En lugar de usar nuestro proceso de compilación y configuraciones de implementación basados en opiniones, Cloud Run Functions te brinda control directo sobre el servicio subyacente creado en Cloud Run.
Con Cloud Run Functions, proporcionamos la UX simple de la implementación de código fuente de Cloud Run, lo que les brinda a los desarrolladores un control completo sobre sus cargas de trabajo con las configuraciones de Cloud Run.
En este codelab, se usan muestras de Node.js en los ejemplos que se muestran a continuación. Sin embargo, puedes usar las muestras de código de Cloud Functions 2nd gen en el lenguaje que elijas:
- Muestras de funciones de Python
- Muestras de funciones de Node.js
- Muestras de funciones de Go
- Muestras de funciones de Java
- Muestras de funciones de PHP
- Muestras de funciones de Ruby
- Muestras de funciones de.NET
Qué aprenderás
- Cómo implementar una función de Cloud Run que se activa con una solicitud HTTP
2. Establece variables de entorno y habilita APIs
Actualiza la CLI de gcloud
Primero, deberás tener instalada una versión reciente de la CLI de gcloud. Puedes actualizar la CLI ejecutando el siguiente comando:
gcloud components update
Configura variables de entorno
Puedes establecer variables de entorno que se usarán a lo largo de 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, deberás habilitar varias APIs. En este codelab, se 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, luego, usa el comando cd para acceder a él.
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 paquetes de compilación 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 basado en contenedores ejecutables.
- La marca –function (nueva) se usa para establecer el punto de entrada del nuevo servicio como la firma de la función que deseas invocar.
- (Opcional) El parámetro –no-allow-unauthenticated para evitar que se pueda invocar tu función de forma pública
5. Prueba la función
Cuando se complete la implementación, verás la URL del servicio. Para invocar la función, debes enviar una solicitud autenticada con tu token de identidad o el token de identidad de una principal 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 Cloud Run Functions.
Temas abordados
- Cómo implementar una función de Cloud Run que se activa con 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 invocaciones 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 todo el proyecto, 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 de proyecto en el SDK de Cloud. Para ver la lista de todos los proyectos disponibles, ejecuta gcloud projects list.