Instructivo HTTP

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

Objetivos

Costos

Este instructivo usa componentes facturables de Cloud Platform, incluidos los siguientes:

  • Google Cloud Functions

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

Antes de comenzar

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Select or create a Google Cloud Platform project.

    Go to the Manage resources page

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. {% dynamic if "no_credentials" in setvar.task_params %} {% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %} {% dynamic if not setvar.redirect_url %} {% dynamic setvar redirect_url %}https://console.cloud.google.com{% dynamic endsetvar %} {% dynamic endif %}{% dynamic endif %} {% dynamic if setvar.in_henhouse_no_auth_whitelist %} {% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %} {% dynamic endif %} {% dynamic elif setvar.in_henhouse_service_account_whitelist %} {% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}SERVICE_ACCOUNT{% dynamic endsetvar %} {% dynamic endif %}{% dynamic endif %} {% dynamic if not setvar.service_account_roles and setvar.credential_type == "SERVICE_ACCOUNT" %} {% dynamic setvar service_account_roles %} {% dynamic endsetvar %} {% dynamic endif %} {% dynamic setvar console %} {% dynamic if "no_steps" not in setvar.task_params %}
  5. {% dynamic endif %} {% dynamic if setvar.api_list %} {% dynamic if setvar.in_henhouse_no_auth_whitelist or setvar.in_henhouse_service_account_whitelist %} Configurar un proyecto de GCP Console.

    Configurar un proyecto

    Haz clic para realizar alguna de las siguientes acciones:

    • Crear o seleccionar un proyecto.
    • Habilitar las {% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %} necesarias para el proyecto.
    • {% dynamic if setvar.credential_type == 'SERVICE_ACCOUNT' %}
    • Crear una cuenta de servicio.
    • Descargar una clave privada como JSON.
    • {% dynamic endif %}

    Puedes visualizar y administrar estos recursos en GCP Console en cualquier momento.

    {% dynamic else %}{% dynamic if "no_text" not in setvar.task_params %} Habilita las {% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %} necesarias. {% dynamic endif %}

    Habilita las {% dynamic if "," in setvar.api_list %} API{% dynamic else %} API{% dynamic endif %}

    {% dynamic endif %}{% dynamic endif %}{% dynamic if "no_steps" not in setvar.task_params %}
  6. {% dynamic endif %}{% dynamic endsetvar %}{% dynamic print setvar.console %}
  7. Actualiza y, luego, instala los componentes de gcloud:

    Node.js 6

    gcloud components update

    Node.js 8 (Beta)

    gcloud components update &&
    gcloud components install beta

    Python (Beta)

    gcloud components update &&
    gcloud components install beta

    Go (Beta)

    gcloud components update &&
    gcloud components install beta
  8. Prepara tu entorno de programación.

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 (Beta)

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

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

    Go (Beta)

    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, como sigue:

    Node.js

    cd nodejs-docs-samples/functions/helloworld/

    Python (Beta)

    cd python-docs-samples/functions/helloworld/

    Go (Beta)

    cd golang-samples/functions/helloworld/

  3. Consulta 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 (Beta)

    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 (Beta)

    // Package helloworld provides a set of Cloud Function 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

Para implementar la función con un activador HTTP, ejecuta el siguiente comando en el directorio helloworld:

Node.js 6

gcloud functions deploy helloGET --runtime nodejs6 --trigger-http

Node.js 8 (Beta)

gcloud functions deploy helloGET --runtime nodejs8 --trigger-http

Python (Beta)

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

Go (Beta)

gcloud functions deploy HelloGet --runtime go111 --trigger-http

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" 

Python (Beta)

curl "https://REGION-PROJECT_ID.cloudfunctions.net/hello_get" 

Go (Beta)

curl "https://REGION-PROJECT_ID.cloudfunctions.net/HelloGet" 

en la que:

  • 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. Este 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 de "Hola, mundo".

Limpieza

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

Cómo borrar 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:

  1. In the GCP Console, go to the Projects page.

    Go to the Projects page

  2. In the project list, select the project you want to delete and click Delete delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

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 (Beta)

gcloud functions delete hello_get 

Go (Beta)

gcloud functions delete HelloGet 

También puedes borrar las funciones de Cloud Functions desde Google Cloud Platform Console.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Functions