Instructivo HTTP

En este sencillo instructivo, se muestra cómo escribir, implementar y activar una función de HTTP de Cloud Functions.

Objetivos

Costos

En este instructivo, se usan componentes facturables de Cloud Platform, entre los que se incluyen estos:

  • Google Cloud Functions

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto.

Antes de comenzar

    https://cloud.google.com/functions/docs/tutorials/http beta cloudfunctions Cloud Functions no_credentials
  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En GCP Console, en la página de selección de proyecto, selecciona o crea un proyecto de GCP.

    Ir a la página de selección de proyecto

  3. Asegúrate de tener habilitada la facturación para tu proyecto de Google Cloud Platform. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Actualiza los componentes de gcloud:
    gcloud components update
  5. Prepara tu entorno de desarrollo.

Prepara la aplicación

  1. Clona el repositorio de la app de muestra en tu máquina local:

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

    De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

    De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git

    De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.

  2. Ve al directorio que contiene el código de muestra de Cloud Functions:

    Node.js

    cd nodejs-docs-samples/functions/helloworld/

    Python

    cd python-docs-samples/functions/helloworld/

    Go

    cd golang-samples/functions/helloworld/

  3. Observa el código de muestra:

    Node.js

    /**
         * HTTP Cloud Function.
         * This function is exported by index.js, and is executed when
         * you make an HTTP request to the deployed function's endpoint.
         *
         * @param {Object} req Cloud Function request context.
         *                     More info: https://expressjs.com/en/api.html#req
         * @param {Object} res Cloud Function response context.
         *                     More info: https://expressjs.com/en/api.html#res
         */
        exports.helloGET = (req, res) => {
          res.send('Hello World!');
        };

    Python

    def hello_get(request):
            """HTTP Cloud Function.
            Args:
                request (flask.Request): The request object.
                <http://flask.pocoo.org/docs/1.0/api/#flask.Request>
            Returns:
                The response text, or any set of values that can be turned into a
                Response object using `make_response`
                <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>.
            """
            return 'Hello World!'

    Go

    
        // Package helloworld provides a set of Cloud Functions samples.
        package helloworld
    
        import (
        	"fmt"
        	"net/http"
        )
    
        // HelloGet is an HTTP Cloud Function.
        func HelloGet(w http.ResponseWriter, r *http.Request) {
        	fmt.Fprint(w, "Hello, World!")
        }
        

Implementa la función

Ejecuta el siguiente comando en el directorio helloworld para implementar la función con un activador HTTP:

Node.js

gcloud functions deploy helloGET --runtime nodejs8 --trigger-http --allow-unauthenticated
Puedes usar los siguientes valores para que la marca --runtime especifique tu versión preferida de Node.js:
  • nodejs6 (obsoleto)
  • nodejs8
  • nodejs10 (Beta)

Python

gcloud functions deploy hello_get --runtime python37 --trigger-http --allow-unauthenticated

Go

gcloud functions deploy HelloGet --runtime go111 --trigger-http --allow-unauthenticated
Puedes usar los siguientes valores para que la marca --runtime especifique tu versión preferida de Go:
  • go111
  • go113 (Beta)

La marca --allow-unauthenticated te permite acceder a la función sin autenticación. Omítela para exigir autenticación.

Activa la función

Para hacer una solicitud HTTP a tu función, ejecuta el siguiente comando:

Node.js

curl "https://REGION-PROJECT_ID.cloudfunctions.net/helloGET" --trigger-http --allow-unauthenticated

Python

curl "https://REGION-PROJECT_ID.cloudfunctions.net/hello_get" --trigger-http --allow-unauthenticated

Go

curl "https://REGION-PROJECT_ID.cloudfunctions.net/HelloGet" --trigger-http --allow-unauthenticated

donde

  • REGION es la región en la que se implementa tu función. Esta se puede ver en tu terminal cuando la función termina de implementarse.
  • PROJECT_ID es el ID del proyecto de Cloud. Esta se puede ver en tu terminal cuando la función termina de implementarse.

También puedes visitar el extremo de la función implementada en tu navegador para ver el mensaje "Hello World!".

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo:

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, haz lo siguiente:

    console
  1. En GCP Console, dirígete a la página Administrar recursos.

    Ir a la página Administración de recursos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar .
  3. En el cuadro de diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra la función de Cloud Functions

Borrar las funciones de Cloud Functions no quita ningún recurso almacenado en Cloud Storage.

Para borrar la función de Cloud Functions que creaste en este instructivo, ejecuta el siguiente comando:

Node.js

gcloud functions delete helloGET 

Python

gcloud functions delete hello_get 

Go

gcloud functions delete HelloGet 

También puedes borrar Cloud Functions en Google Cloud Console.