Implementa desde tu máquina local

En esta página, se muestra cómo implementar una función de Cloud Functions desde tu máquina local con la herramienta de línea de comandos de gcloud. Cuando usas la herramienta de línea de comandos, Cloud Functions empaqueta y sube el contenido del directorio de tu función a un depósito de Cloud Storage y automáticamente excluye archivos innecesarios mediante el archivo .gcloudignore.

De manera alternativa, puedes usar la interfaz de Cloud Functions en Cloud Console para subir un archivo ZIP que tu hayas creado.

Para ver un ejemplo completo ejecutable que incluya código de muestra descargable, consulta la guía de inicio rápido Usa la herramienta de línea de comandos de gcloud.

Implementa con la herramienta de gcloud

Con la herramienta de línea de comandos de gcloud, implementa tu función desde el directorio que contiene tu código de función con el comando gcloud functions deploy:

    gcloud functions deploy NAME --runtime RUNTIME TRIGGER [FLAGS...]
    
Argumento Descripción
NAME El nombre de la función de Cloud que implementas. Este nombre solo puede contener letras, números, guiones bajos y guiones. A menos que especifiques el marcador --entry-point, tu código debe contener una función con el mismo nombre.
--runtime RUNTIME El nombre del entorno de ejecución que usas. Para obtener una lista completa, consulta la referencia de gcloud. Ten en cuenta que debes incluir esta marca la primera vez que implementes una función, pero puedes omitirla en implementaciones posteriores.
TRIGGER El tipo de activador para esta función (consulta Eventos y activadores). Estas son las reglas para especificar los activadores cuando se implementa una función:
  • Si no especificas un activador cuando implementes una actualización en una función existente, esta conservará el activador actual.
  • Cuando implementas una nueva función, debes especificar uno de --trigger-http, --trigger-topic o --trigger-bucket, o bien especificar --trigger-event Y --trigger-resource. Usas el marcador --trigger-http para implementar funciones de HTTP. Usas los demás marcadores para implementar funciones en segundo plano.
FLAGS... Marcadores adicionales que puedes especificar durante la implementación, como --stage-bucket o --entry-point (opcional). Para obtener una referencia completa, consulta la documentación de gcloud functions deploy.

Cada entorno de ejecución tiene requisitos específicos de estructuración de archivos para que Cloud Functions pueda encontrar la definición de tu función.

Ejemplo de función de HTTP

Hay dos tipos de funciones de Cloud Functions: funciones de HTTP y funciones en segundo plano. Para ver un ejemplo que muestre cómo implementar una función en segundo plano, consulta el ejemplo de función en segundo plano. En el siguiente ejemplo, se implementa una función de HTTP escrita en Python y se le asigna un activador con el marcador --trigger-http:

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

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

Ve los argumentos de este comando:

Argumento Descripción
helloworld El nombre de la función de Cloud Functions que vas a implementar, en este caso helloworld. La función de Cloud Functions implementada se registrará con el nombre helloworld, y el archivo fuente debe contener una función llamada helloworld.
--runtime python37 El entorno de ejecución para esta función, en este caso python37.
--trigger-http El tipo de activador para esta función, en este caso una solicitud de HTTP (webhook).
--allow-unauthenticated Especifica que la función no requiere autenticación para invocar. De forma predeterminada, las funciones de HTTP requieren autenticación. Si no incluyes esta marca la primera vez que implementas una función de HTTP, se te solicitará que permitas invocaciones no autenticadas. No se te solicitarán invocaciones posteriores.

En el siguiente ejemplo, se implementa la misma función, pero con un nombre diferente:

    gcloud functions deploy hello --entry-point helloworld --runtime python37 --trigger-http --allow-unauthenticated
    

Ve los argumentos de este comando:

Argumento Descripción
hello El nombre de la función de Cloud Functions que vas a implementar, en este caso hello. La función de Cloud Functions implementada se registrará con el nombre hello.
--entry-point helloworld La función de Cloud Functions implementada usará una función llamada helloworld en el archivo fuente.
--runtime python37 El entorno de ejecución para esta función, en este caso python37.
--trigger-http El tipo de activador para esta función, en este caso una solicitud de HTTP (webhook).
--allow-unauthenticated Especifica que la función no requiere autenticación para invocar.

La opción --entry-point es útil cuando las funciones en tu código fuente no cumplen con los requisitos de nomenclatura para las funciones de Cloud Functions.

Ejemplo de función en segundo plano

En los siguientes ejemplos, se implementa una función en segundo plano escrita en Node.js 8 que Cloud Storage activará.

    gcloud functions deploy helloGCSGeneric --runtime nodejs8 --trigger-resource TRIGGER_BUCKET_NAME --trigger-event google.storage.object.finalize
    

Ve los argumentos de este comando:

Argumento Descripción
helloGCSGeneric El nombre de la función de Cloud Functions que vas a implementar, en este caso helloGCSGeneric. La función de Cloud Functions implementada se registrará con el nombre helloGCSGeneric, y el archivo fuente debe contener una función llamada helloGCSGeneric.
--runtime nodejs8 El entorno de ejecución para esta función, en este caso nodejs8.
--trigger-resource El recurso activador de esta función. El recurso activador especifica el recurso para el cual se observa el evento activador. En este caso, el recurso es el nombre (TRIGGER_BUCKET_NAME) del depósito de Cloud Storage que activa la función.
--trigger-event El evento activador para esta función, que especifica qué acción debería activar la función. En este caso, el evento es google.storage.object.finalize.

Usar las marcas --trigger-resource MY_RESOURCE y --trigger-event MY_EVENT es la forma más explícita de especificar un activador para una función en segundo plano. Sin embargo, gcloud proporciona abreviaturas para Pub/Sub y Cloud Storage:

  • Cuando implementes funciones que tienen asignados activadores Pub/Sub, puedes usar la marca --trigger-topic MY_TOPIC. Esta marca es una abreviatura de --trigger-resource MY_TOPIC --trigger-event google.pubsub.topic.publish.

  • Cuando implementes funciones a las que se les asignaron activadores de Cloud Storage, puedes usar la marca --trigger-bucket MY_STORAGE_BUCKET para activar la ejecución de la función cuando cambien los archivos en el depósito especificado.

Próximos pasos