DEV Community

Cover image for Google Cloud functions -> Node.js
Falcon
Falcon

Posted on • Updated on

Google Cloud functions -> Node.js

Google Cloud Functions es un entorno de ejecución sin servidor para crear y conectar servicios en la nube. Con Cloud Functions, usted escribe funciones simples y de un solo propósito que se adjuntan a eventos emitidos desde su infraestructura y servicios en la nube. Su función en la nube se activa cuando se dispara un evento que se está viendo. Su código se ejecuta en un entorno totalmente administrado. No es necesario aprovisionar infraestructura ni preocuparse por administrar servidores, en otras palabras usted solo se preocupa por "tirar código como loco".

Google Cloud Functions se pueden escribir en Node.js, Python y Go, y se ejecuta en tiempos de ejecución específicos del idioma. El entorno de ejecución de Cloud Functions varía según el tiempo de ejecución elegido.

Tipos de Cloud functions

Hay 2 distintos tipos de Cloud functions: HTTP y Background functions.

Funciones HTTP

Invoca funciones HTTP a partir de solicitudes HTTP estándar. Estas solicitudes HTTP esperan la respuesta y el manejo de soporte de métodos comunes de solicitud HTTP como GET, PUT, POST, DELETE y OPTIONS. Cuando utiliza Cloud Functions, se le proporciona automáticamente un certificado TLS, por lo que todas las funciones HTTP se pueden invocar a través de una conexión segura.

Funciones Background

Las funciones en background manejan eventos de su infraestructura en la nube, como mensajes en un tema de Cloud Pub / Sub, o cambios en un depósito de Cloud Storage.

Para este post, hablaré sobre funciones HTTP, en otros posts hablaré sobre las de background, así que, manos a la obra.

Requisitos

Antes de comenzar, usted debería asegurarse de haber instalado Node en su máquina, haber creado un Proyecto de Google Cloud y de haber instalado el SDK de Google Cloud.

Para verificar que Node ha sido instalado, usted debería ejecutar los siguientes comandos.

npm -v
node -v

Además, usted podría verificar que Google Cloud SDK ha sido instalado con un comando similar:

gcloud --version

Setting up Google Cloud

Una vez que haya creado su proyecto Google Cloud, podemos habilitar la API de Cloud function en la nube. En la consola de Google Cloud, navegue a APIs & Services y luego en la biblioteca busque la API de Cloud Function. Debería encontrarse en una pantalla similar a la siguiente. Continúa y habilita la API.

O si usted es un fan de la consola como mi persona, podría correr este comando el cual tiene el mismo efecto:

gcloud services enable cloudfunctions.googleapis.com

Si la instalación fue satisfactoria, usted debería ver este API activo usando el siguiente comando:

gcloud services list --available

Alt Text

Creando un Express App

Para inicializar la aplicación, usaremos la herramienta npm para crear el package.json y luego crearemos el archivo en el que vamos a escribir nuestro código.

En algún directorio de su preferencia, vamos a crear un folder llamado cloud-functions-nodejs, dentro de este folder corramos el siguiente comando npm init, este comando nos crea el package.json.

El siguiente paso es instalar Express a nuestro proyecto, lo haremos ejecutando el siguiente comando:

npm install express --save

Finalmente, crear un archivo llamado index.js, donde escribiremos nuestro código. Ok, ya estamos con lo necesario para comenzar a desarrollar, abrir el archivo anteriormente creado con tu editor favorito y codear lo siguiente:

```const express = require('express');
const app = express();

const PORT = 5555;

app.listen(PORT, () => {
console.log(Server ejecutándose en el puerto ${PORT});
});```

Ejecutar su app por medio del comando:

node index.js

.

Usted debería ser capaz de ver el siguiente mensaje en su consola:

Server ejecutándose en el puerto 5555

.

¡Felicidades! ¡Has creado tu primera aplicación Express! El único problema es que si deseas ejecutar alguna acción en http: // localhost: 5555 no veras nada porque no hemos configurado la aplicación para escuchar las solicitudes.

Modifiquemos nuestro index.js con el siguiente código para crear algunos endpoints:

const express = require('express');
const app = express();

const PORT = 5555;
const USERS = [
    {
        id: 1,
        firstName: 'Gerardo',
        lastName: 'Lopez'
    },
    {
        id: 2,
        firstName: 'Yirian',
        lastName: 'Acuña'
    }
];

app.listen(PORT, () => {
    console.log(`Server ejecutándose en el puerto ${PORT}`);
});

app.get('/users', (req, res, next) => {
    res.json(USERS);
});

app.get('/users/:userId', (req, res, next) => {
    res.json(USERS.find(user => user.id === parseInt(req.params.userId)));
});

module.exports = {
    app
};
Enter fullscreen mode Exit fullscreen mode

Vuelva a ejecutar la aplicación y debería poder ir a
http://localhost:5555/users y ver nuestra lista de usuarios.

Nuestro segundo endpoint muestra cómo puede usar los parámetros de ruta en Express, por lo que si va a http://localhost:5555/users/2 verá a nuestro usuario "Yirian Acuña".

Deployeando en Cloud Functions

Ahora implementemos nuestra aplicación en Cloud Functions. Para implementar nuestra aplicación solo necesitamos un comando. En el directorio de nivel raíz de nuestra aplicación (el que contiene index.js), ejecute el comando:

gcloud functions deploy mi-primer-funcion --runtime nodejs8 --trigger-http --entry-point app

Esto tardará unos minutos en ejecutarse, pero una vez que haya terminado, debería ver lo siguiente impreso en la consola.

Deploying function (may take a while - up to 2 minutes)...done.
httpsTrigger:
  url: https://us-central1-<GCP-PROJECT-ID>.cloudfunctions.net/mi-primer-funcion
labels:
  deployment-tool: cli-gcloud
name: projects/<GCP-PROJECT-ID>/locations/us-central1/functions/mi-primer-funcion
runtime: nodejs8
Enter fullscreen mode Exit fullscreen mode

Analicemos brevemente el comando que ejecutamos. Después de implementar la función gcloud, el siguiente parámetro es el nombre de su función. El indicador --runtime le dice a GCP qué tiempo de ejecución necesita su aplicación. El indicador --entry-point apunta al método ó objeto en index.js que deseamos exportar como un Cloud function, en otras palabras, es el punto de entrada para la función.

Después de haber implementado la función, deberías poder verla en la consola de Google Cloud y puedes llamar a tu función usando https://us-central1-<GCP-PROJECT-ID>.cloudfunctions.net/mi-primer-funcion/users.

Alt Text

Eso fue fácil pero ya al menos tienes la idea suficiente de como crear un Google cloud run (HTTP events). En un futuro no muy lejano escribiré sobre los otros tipos de funciones.

Agradezco compartir con la comunidad. Si quieres seguir aprendiendo junto a mí, te invito a seguir mis redes sociales:

Oldest comments (0)