Header Ads Widget

Ticker

6/recent/ticker-posts

Funciones de Google Cloud: un (muy retrasado) "¡hola, mundo!" en GCP

 A principios de 2018, Google Cloud Functions pasó a GA . Algún tiempo antes de eso, en marzo de 2018, mientras aún estaba en versión beta, tomé algunas capturas de pantalla mientras tomaba mi primera oportunidad en Cloud Functions. Pero luego una cosa llevó a la otra, y a otra, y a otra, y esta publicación de blog nunca nació.

Ahora, después de todo un año de total obsolescencia, les presento mi guía de "introducción a Google Cloud Functions [beta]".

Seguramente muchas cosas han cambiado; La etiqueta beta desapareció, se introdujeron hordas de nuevas características: tiempo de ejecución de Python, variables de entorno, invocaciones y registros de prueba incorporados, y muchas cosas que ni siquiera he visto todavía.

Activa la facturación en tu cuenta de GCP

Ahora, si se apresura al panel de Cloud Functions , es posible que note que necesita habilitar la API de Cloud Functions , a menos que ya lo haya hecho, con su proyecto de GCP actualmente activo.

Funciones de Google Cloud
Funciones de Google Cloud

Cloud Functions necesita un proyecto de GCP habilitado para facturación, así que eso es lo primero que debemos hacer. La guía oficial de Google es bastante fácil de seguir.

Funciones de Google Cloud

Google promete que no se nos cobrará durante nuestra prueba gratuita de 1 año y $ 300, por lo que estamos cubiertos aquí.

Crea una función en la nube

Cuando termine, vaya al panel de Cloud Functions y haga clic en Crear función .

Funciones de Google Cloud

Esto lo llevará a un asistente de creación de funciones . La primera fase se parecería a:

Funciones de Google Cloud

Aquí define la mayoría de los conceptos básicos de su función en la nube: nombre, límite máximo de memoria , disparador y código fuente.

Más adelante, tienes la oportunidad de definir el controlador / punto de entrada (función NodeJS para invocar cuando se activa la función de la nube); y otras configuraciones como la región de implementación de la función y el tiempo de espera ( tiempo máximo de ejecución por solicitud).

Opciones de disparo

Los activadores pueden invocar su función en la nube en respuesta a acciones externas: activas como solicitudes HTTP o pasivas como eventos de depósitos de Cloud Storage o temas de Cloud Pub / Sub .

En plataformas como AWS, esto puede no significar mucha diferencia: Lambda configura y maneja ambos tipos de eventos de la misma manera. Pero en GCP se manejan de manera bastante diferente; tan diferente que la propia firma del método de función en la nube es diferente .

Si intenta cambiar entre los tipos de activadores, verá cómo cambia el código de muestra en Código fuente :

Funciones HTTP

Google genera la firma:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
/**
 * Responds to any HTTP request that can provide a "message" field in the body.
 *
 * @param {!Object} req Cloud Function request context.
 * @param {!Object} res Cloud Function response context.
 */
exports.helloWorld = (req, res) => {
  // Example input: {"message": "Hello!"}
  if (req.body.message === undefined) {
    // This is an error case, as "message" is required.
    res.status(400).send('No message defined!');
  } else {
    // Everything is okay.
    console.log(req.body.message);
    res.status(200).send('Success: ' + req.body.message);
  }
};

Una función HTTP acepta una solicitud y escribe una respuesta .

Google proporciona automáticamente el punto final HTTP (S) en https://{region}-{project-name}-gcp.cloudfunctions.net/{function-name}Así que no hay nada más que configurar en términos de disparadores.

Funciones basadas en eventos

La firma de Google se ve así:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
/**
 * Triggered from a message on a Cloud Pub/Sub topic.
 *
 * @param {!Object} event The Cloud Functions event.
 * @param {!Function} The callback function.
 */
exports.subscribe = (event, callback) => {
  // The Cloud Pub/Sub Message object.
  const pubsubMessage = event.data;
 
  // We're just going to log the message to prove that
  // it worked.
  console.log(Buffer.from(pubsubMessage.data, 'base64').toString());
 
  // Don't forget to call the callback.
  callback();
};

Las funciones basadas en eventos aceptan un evento y transmiten éxito / fracaso (y, opcionalmente, un resultado) a través de una devolución de llamada .

Aquí necesitamos configurar una fuente de eventos (tema Pub / Sub o depósito de almacenamiento) para activar la función.

Funciones de Google Cloud

Lo bueno es que GCP le permite elegir un tema / depósito existente, o crear uno nuevo, allí mismo dentro de la página del asistente de funciones en la nube.

Funciones de Google Cloud
Funciones de Google Cloud

Elegir una entidad existente es igual de fácil:

Funciones de Google Cloud

Reintento automático

Estas funciones que no son HTTP también tienen un mecanismo de reintento: puedes configurar GCP para volver a enviar un evento a la función automáticamente, si la función no pudo procesarlo durante la última vez.

Funciones de Google Cloud

Esto es bueno para solucionar fallas temporales, pero puede ser peligroso si el error se debe a un error en su código: GCP seguirá reintentando el evento fallido por hasta 7 días, agotando sus cuotas y aumentando su factura.

Nace una función

Ahora hemos terminado con las configuraciones; haga clic en Crear .

GCP lo lleva de regreso al panel de funciones, donde se enumerará la nueva función; con un estado "pendiente" o "creando".

Funciones de Google Cloud

Puede llevar un tiempo, pero finalmente verá la función creada con éxito en estado Activo :

Funciones de Google Cloud

En los días de la beta, recibí algunos errores esporádicos al intentar crear funciones; sin razón aparente. Ojalá nadie tenga tanta mala suerte en estos días.

Es una buena práctica etiquetar sus funciones para que pueda encontrarlas y administrarlas fácilmente. GCP le permite hacer esto directamente desde el panel de control.

Funciones de Google Cloud

Acciones de función

Haga clic en el botón de tres puntos en el extremo derecho de la entrada de la función, para ver qué puede hacer a continuación:

Funciones de Google Cloud

En los días de la versión beta, hubo algunos contratiempos con algunas de estas opciones (como la función Copiar ; ¡con suerte ya se han ido!

Funciones de Google Cloud

Pruebas

Test Function ofrece una interfaz agradable en la que puede invocar la función con una carga útil personalizada y ver los registros de salida y ejecución de inmediato. Sin embargo, todavía carece de la capacidad de definir y ejecutar eventos de prueba personalizados predefinidos, como en AWS o Sigma . Otra advertencia es que las invocaciones de prueba también afectan a la misma instancia de función de producción (a diferencia de, digamos, el entorno de prueba de Sigma ), por lo que cuentan para los registros y estadísticas de su función real.

Funciones de Google Cloud
Funciones de Google Cloud

Registros

Ver registros lo lleva a la página familiar de registro de StackDriver, donde puede navegar, ordenar, buscar secuencias y hacer todo tipo de cosas con los registros de su función. Los registros más recientes tardan unos segundos en aparecer, como también ocurre con otras plataformas.

Funciones de Google Cloud

Más detalles de la función

Puede hacer clic en la entrada de la función para ver más detalles:

  • La pestaña General muestra un buen gráfico de estadísticas, junto con configuraciones de funciones básicas como tiempo de ejecución, memoria, etc.
Funciones de Google Cloud
  • La pestaña Trigger muestra la configuración de trigger de la función.
Funciones de Google Cloud

A partir de ahora, GCP no le permite editar / cambiar el activador después de haber creado la función; ¡Esperamos sinceramente que esto se relaje en el futuro!

Funciones de Google Cloud
  • La pestaña Fuente tiene el visor de código familiar (aunque no puede actualizar e implementar el código directamente desde allí). También tiene un botón Descargar zip para el archivo de código.
Funciones de Google Cloud
  • Pestaña de prueba que ya hemos visto. También es bastante bueno, para algo que se convirtió en GA hace solo unos meses.

Entonces, así es como se ve una función en la nube.

O, para ser precisos, cómo solía ser, en los días anteriores y posteriores a la beta.

Estoy seguro de que Google se pondrá al día con la carrera sin servidores , con más fuentes de eventos, idiomas, monitoreo, etc.

¿Pero tenemos que esperar? Absolutamente no.

Las funciones de nube son lo suficientemente maduras para la mayoría de sus integraciones de rutina. Un fastidio importante es que aún no admite horarios de temporizador, pero la gente ya está usando soluciones alternativas .

Además, muchos de los marcos de desarrollo líderes sin servidor ya son compatibles con GCP.

¡ Súbete y escribe tu propia historia de éxito sin servidor en GCP!

Publicar un comentario

0 Comentarios