Implementa una función de Cloud Run (1ª gen.)
En esta guía, se muestra cómo implementar una función heredada de Cloud Run de 1ª gen. a partir del código fuente. Si quieres crear una función nueva, consulta la Guía de inicio rápido de la consola en Cloud Run.
El proceso de implementación toma el código fuente y los parámetros de configuración y compila una imagen ejecutable que Cloud Run Functions administra automáticamente para controlar las solicitudes que recibe la función.
Conceptos básicos de la implementación
Los usuarios que implementan funciones de Cloud Run deben tener el rol de IAM de desarrollador de Cloud Run Functions o uno que incluya los mismos permisos. También consulta Configuración adicional para la implementación.
Implementa una función con la gcloud CLI como se indica a continuación:
Usa el comando
gcloud functions deploypara implementar una función:gcloud functions deploy YOUR_FUNCTION_NAME \ [--gen2] \ --region=YOUR_REGION \ --runtime=YOUR_RUNTIME \ --source=YOUR_SOURCE_LOCATION \ --entry-point=YOUR_CODE_ENTRYPOINT \ TRIGGER_FLAGS
El primer argumento,
YOUR_FUNCTION_NAME, es el nombre de la función que implementas. Este debe empezar con una letra, seguida de hasta 62 letras, números, guiones o guiones bajos, y debe terminar con una letra o un número.La marca
--gen2especifica que deseas implementarla en Cloud Run Functions. A partir de septiembre de 2024, esta será la opción predeterminada. Para implementar en la 1ª gen., usa--no-gen2.La marca
--regionespecifica la región en la que se implementará la función. Consulta Ubicaciones para obtener una lista de las regiones compatibles con Cloud Run Functions.La marca
--runtimeespecifica el entorno de ejecución del lenguaje que usa la función. Cloud Run Functions admite varios entornos de ejecución. Consulta Entornos de ejecución para obtener más información.La marca
--sourceespecifica la ubicación del código fuente de la función. Consulta las secciones siguientes para obtener más detalles:La marca
--entry-pointespecifica el punto de entrada a la función en el código fuente. Este es el código que se ejecutará cuando así lo haga la función. El valor de esta marca debe ser el nombre de una función o el nombre completamente calificado de la clase que esté en el código fuente. Consulta Punto de entrada de la función para obtener más información.Para especificar el activador de la función, se requieren marcas adicionales (representadas como
TRIGGER_FLAGSen el ejemplo anterior), según el activador que desees usar:Marcas del activador Descripción del activador --trigger-httpActiva la función con una solicitud HTTP(S). Consulta Activadores HTTP para obtener más información. --trigger-topic=YOUR_PUBSUB_TOPICActiva la función cuando se publica un mensaje en el tema de Pub/Sub especificado. Consulta Activadores de Pub/Sub para obtener más información. --trigger-bucket=YOUR_STORAGE_BUCKETActiva la función cuando se crea o reemplaza un objeto en el bucket de Cloud Storage especificado. Consulta Activadores de Cloud Storage para obtener más información. --trigger-event=EVENT_TYPE
[--trigger-resource=RESOURCE]Activa la función cuando se produce el evento especificado. Para algunos tipos de eventos, es obligatorio especificar un recurso. Consulta Activadores admitidos en Cloud Run Functions (1ª gen.) para obtener más información. De manera opcional, puedes especificar opciones adicionales de configuración, herramientas de redes y seguridad cuando implementes una función.
Para obtener una referencia completa del comando de implementación y sus marcas, consulta la documentación de
gcloud functions deploy.Para ver algunos ejemplos de comandos de implementación, consulta Ejemplos de la línea de comandos.
Implementa desde tu máquina local
En esta sección, se describe cómo usar la gcloud CLI para implementar una función desde el código fuente ubicado en tu máquina local.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Sigue las instrucciones de implementación anteriores con el comando
gcloud functions deploy.Para la marca
--source, especifica una ruta de acceso del sistema de archivos local al directorio raíz incluido en el código fuente de la función. Consulta Estructura del directorio del código fuente. Si se omite esta marca, se usa el directorio de trabajo actual.De forma opcional, también puedes usar la marca
--stage-bucketcon el objetivo de especificar un bucket de Cloud Storage para subir el código fuente como parte de la implementación.Durante la carga del código fuente, Cloud Run Functions excluye los archivos innecesarios a través del archivo
.gcloudignore.-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Sigue las instrucciones de implementación anteriores con el comando
gcloud functions deploy.Para la marca
--source, especifica una ruta de acceso de Cloud Storage que empiece congs://. El objeto de la ruta de acceso debe ser un archivo ZIP que contenga el código fuente de la función. Los archivos fuente de la función deben estar en la raíz del archivo ZIP. Consulta Estructura del directorio del código fuente.- La función usa Node.js 22.
- El código fuente se encuentra en el directorio de trabajo actual (
.). - El punto de entrada en el código se llama
myHttpFunction. - La función controla los eventos de publicación de mensajes de Pub/Sub.
- La función usa Python 3.12.
- El código fuente se encuentra en Cloud Storage, en la ruta de acceso
gs://my-bucket/my_function_source.zip. - El punto de entrada en el código se llama
pubsub_handler. - La función controla los eventos de eliminación de objetos de Cloud Storage.
- La función usa Java 17.
- El código fuente se encuentra a nivel local en la ruta de acceso
./functions/storage-function. - El punto de entrada en el código se llama
myproject.StorageFunction. - Consulta los detalles sobre los activadores de Cloud Run Functions.
- Obtén información sobre el proceso de compilación de funciones de Cloud Run.
- Explora las opciones de configuración adicionales de Cloud Run Functions.
- Obtén información para proteger las funciones de Cloud Run.
Implementa desde Cloud Storage
En esta sección, se describe cómo usar la gcloud CLI para implementar una función desde un código fuente ubicado en un bucket de Cloud Storage. El código fuente debe empaquetarse como un archivo ZIP.
Para que Cloud Run Functions lea el contenido de un bucket de Cloud Storage, debes otorgar el
permiso storage.objects.get a la cuenta que lleva a cabo la implementación.
Consulta Usa permisos de IAM en la documentación de Cloud Storage para obtener información sobre cómo se controla el acceso a los buckets.
Con este permiso, puedes implementar una función desde Cloud Storage:
Ejemplos de la línea de comandos
En esta sección, se muestran los comandos de implementación para algunos casos de implementación de ejemplo.
Para obtener más detalles sobre los diferentes activadores compatibles con Cloud Run Functions, consulta Activadores de Cloud Run Functions.
Función de HTTP desde el código fuente local
Supongamos que tienes una función de HTTP como la siguiente:
Para implementar la función en Cloud Run Functions con el nombre
my-http-function en la región us-central1, usa el comando siguiente:
gcloud functions deploy my-http-function \
--no-gen2 \
--region=us-central1 \
--runtime=nodejs22 \
--source=. \
--entry-point=myHttpFunction \
--trigger-http
Función de Pub/Sub desde el código fuente en Cloud Storage
Supongamos que tienes una función basada en eventos como la siguiente:
Para implementar la función en Cloud Run Functions con el nombre
my-pubsub-function en la región europe-west1 y hacer que la función
se active con mensajes en el tema de Pub/Sub my-topic, usa el
comando siguiente:
gcloud functions deploy my-pubsub-function \
--no-gen2 \
--region=europe-west1 \
--runtime=python312 \
--source=gs://my-bucket/my_function_source.zip \
--entry-point=pubsub_handler \
--trigger-topic=my-topic
Función de Cloud Storage desde el código fuente local
Supongamos que tienes una función basada en eventos como la siguiente:
Para implementar la función en Cloud Run Functions con el nombre
my-storage-function en la región asia-northeast1 y hacer que la función
se active con eventos en el bucket de Cloud Storage my-bucket, usa el
comando siguiente:
gcloud functions deploy my-storage-function \
--no-gen2 \
--region=asia-northeast1 \
--runtime=java17 \
--source=./functions/storage-function \
--entry-point=myproject.StorageFunction \
--trigger-resource=gs://my-bucket \
--trigger-event=google.storage.object.delete