Implementa una Cloud Run Function

En esta guía, se muestra cómo implementar una Cloud Run Function a partir del código fuente.

El proceso de implementación toma tu código fuente y tu configuración y compila una imagen ejecutable que Cloud Run Functions administra de forma automática para controlar las solicitudes a tu función.

Conceptos básicos de la implementación

Los usuarios que implementan Cloud Run Functions deben tener el rol de IAM Desarrollador de funciones de Cloud Run o un rol que incluya los mismos permisos. Consulta también Configuración adicional para la implementación.

Selecciona una pestaña para obtener instrucciones para implementar una gcloud CLI o la consola de Google Cloud.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. Usa el comando gcloud functions deploy para 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 un nombre para tu función implementada. El nombre de la función debe comenzar con una letra seguida de un máximo de 62 letras, números, guiones o guiones bajos, y debe terminar con una letra o un número. El nombre del servicio de Cloud Run que se crea para tu función reemplazará los guiones bajos por guiones y las letras mayúsculas se convertirán en minúsculas. Por ejemplo, a Function_1 se le asignará el nombre function-1 en Cloud Run.

    • La marca --gen2 especifica que deseas implementar en Cloud Run Functions.

    • La marca --region especifica la región en la que se implementará la función. Consulta Ubicaciones para obtener una lista de regiones compatibles con Cloud Run Functions.

    • La marca --runtime especifica el entorno de ejecución de lenguaje que usa tu función. Cloud Run Functions admite varios entornos de ejecución. Consulta Entornos de ejecución para obtener más información.

    • La marca --source especifica la ubicación del código fuente de tu función. Consulta las siguientes secciones para obtener más detalles:

    • La marca --entry-point especifica el punto de entrada a tu función en tu código fuente. Este es el código que se ejecutará cuando se ejecute tu función. El valor de esta marca debe ser un nombre de función o un nombre de clase completamente calificado que exista en tu código fuente. Consulta Punto de entrada de la función para obtener más información.

    • Para especificar el activador de tu función, se requieren marcas adicionales (representadas como TRIGGER_FLAGS en el ejemplo anterior), según el activador que deseas usar:

    Marcas del activador Descripción del activador
    --trigger-http Activa la función con una solicitud HTTP(S). Para obtener más información, consulta Activadores HTTP.
    --trigger-topic=YOUR_PUBSUB_TOPIC Activa 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_BUCKET Activa la función cuando se crea o reemplaza un objeto en el bucket de Cloud Storage especificado. Para obtener más información, consulta Activadores de Cloud Storage.
    --trigger-event-filters=EVENTARC_EVENT_FILTERS Activa la función con Eventarc cuando se produce un evento que coincide con los filtros especificados. Requiere que se especifique la marca --gen2. Consulta Activadores de Eventarc para obtener más información y opciones adicionales.

    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 línea de comandos.

Console

  1. Ve a la página Descripción general de Cloud Run Functions en la consola de Google Cloud.

    Ve a Cloud Run Functions

    Asegúrate de que el proyecto de Google Cloud en el que deseas implementar Cloud Run Functions esté seleccionado.

  2. Haz clic en Crear función.

  3. En el campo Entorno, selecciona Cloud Run Functions.

  4. En el campo Nombre de la función, ingresa un nombre para tu función. El nombre de la función debe comenzar con una letra seguida de un máximo de 62 letras, números, guiones o guiones bajos, y debe terminar con una letra o un número. El nombre del servicio de Cloud Run que se crea para tu función reemplazará los guiones bajos por guiones y las letras mayúsculas se convertirán en minúsculas. Por ejemplo, a Function_1 se le asignará el nombre function-1 en Cloud Run.

  5. En el campo Región, selecciona una región para implementar tu función.

  6. En la sección Activador, sigue los pasos según el entorno seleccionado:

    1. En el campo Tipo de activador, selecciona el activador que deseas usar:
      • Para un activador HTTPS, selecciona la opción adecuada según si deseas permitir invocaciones no autenticadas de tu función. Cada función de Cloud Run Functions tiene un extremo para activadores HTTP(S). De forma predeterminada, se requiere autenticación. Consulta Autentica para la invocación a fin de obtener más información.
      • Para una función controlada por eventos, elige una de las siguientes opciones: Cloud Pub/Sub, Cloud Storage, Cloud Firestore u Otro activador. Consulta Activadores de Eventarc para obtener más información.
      • Una vez que hayas completado los campos obligatorios, haz clic en Guardar activador.
  7. De forma opcional, expande la sección Entorno de ejecución, compilación… al final de la página para obtener opciones adicionales de configuración y seguridad.

  8. Haz clic en Siguiente para avanzar al paso Código.

  9. En el campo Entorno de ejecución, selecciona el entorno de ejecución de lenguaje que usa tu función. Cloud Run Functions admite varios entornos de ejecución. Consulta Entornos de ejecución para obtener más información.

  10. En el campo Punto de entrada, ingresa el punto de entrada a la función en tu código fuente. Este es el código que se ejecutará cuando se ejecute tu función. El valor de esta marca debe ser un nombre de función o un nombre de clase completamente calificado que exista en tu código fuente. Consulta Punto de entrada de la función para obtener más información.

  11. En el campo Código fuente, selecciona la opción adecuada para el modo en que proporcionarás el código fuente de la función. Consulta las siguientes secciones para obtener más detalles.

  12. Haz clic en Implementar.

Cuando la implementación finaliza correctamente, las funciones aparecen con una marca de verificación verde en la página de descripción general de Cloud Run Functions en la consola de Google Cloud:

Funciones implementadas en la consola de Cloud

La implementación inicial de una función puede tardar varios minutos, mientras se aprovisiona la infraestructura subyacente. Volver a implementar una función existente es más rápido, y el tráfico entrante se migra automáticamente a la versión más reciente.

Implementa desde tu máquina local

En esta sección, se describe cómo implementar una función desde el código fuente ubicado en tu máquina local.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. Sigue las instrucciones de implementación anteriores con el comando gcloud functions deploy.

    Para la marca --source, especifica una ruta de sistema de archivos local al directorio raíz del código fuente de la función. Consulta Estructura del directorio fuente. Si se omite esta marca, se usa el directorio de trabajo actual.

    De forma opcional, también puedes usar la marca --stage-bucket para especificar un bucket de Cloud Storage a fin de subir el código fuente como parte de la implementación.

    Durante la carga de tu código fuente, Cloud Run Functions excluye archivos innecesarios mediante el archivo .gcloudignore.

Console

  1. Sigue las instrucciones de implementación anteriores con la consola de Google Cloud hasta llegar al campo Código fuente.
  2. En el campo Código fuente, selecciona Carga de ZIP.
  3. En el campo Bucket de destino en etapa intermedia, haz clic en Explorar para seleccionar un bucket de Cloud Storage para subir tu código fuente como parte de la implementación.
  4. En el campo Archivo ZIP, haz clic en Explorar para seleccionar un archivo ZIP para subirlo desde tu sistema de archivos local. Los archivos fuente de tu función deben estar ubicados en la raíz del archivo ZIP; consulta Estructura del directorio del código fuente.
  5. Haz clic en Implementar.

Implementa desde Cloud Storage

En esta sección, se describe cómo 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 las Cloud Run Functions lean desde un bucket de Cloud Storage, el agente de servicio de Cloud Run Functions debe tener el permiso storage.objects.get. Si el bucket de origen está en el mismo proyecto que tu función, el permiso se otorga automáticamente. Si el bucket está en un proyecto diferente, debes otorgar el permiso al agente de servicio de forma manual.

Consulta Usa permisos de IAM en la documentación de Cloud Storage para obtener información sobre cómo controlar el acceso a los buckets.

Con este permiso, puedes implementar una función desde Cloud Storage:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. Sigue las instrucciones de implementación anteriores con el comando gcloud functions deploy.

    Para la marca --source, especifica una ruta de Cloud Storage que comience con gs://. El objeto en la ruta de acceso debe ser un archivo ZIP que contenga el código fuente de la función. Los archivos fuente de tu función deben estar ubicados en la raíz del archivo ZIP; consulta Estructura del directorio del código fuente.

Console

  1. Sigue las instrucciones de implementación anteriores con la consola de Google Cloud hasta llegar al campo Código fuente.
  2. En el campo Código fuente, selecciona ZIP de Cloud Storage.
  3. En el campo Ubicación de Cloud Storage, haz clic en Explorar para seleccionar un archivo ZIP de Cloud Storage. Los archivos fuente de tu función deben estar ubicados en la raíz del archivo ZIP; consulta Estructura del directorio del código fuente.
  4. Haz clic en Implementar.

Implementa desde el editor directo de la consola de Google Console

En esta sección, se describe cómo escribir e implementar una función directamente desde la consola de Google Cloud con el editor directo proporcionado.

  1. Sigue las instrucciones de implementación anteriores con la consola de Google Cloud hasta llegar al campo Código fuente.
  2. En el campo Código fuente, selecciona Editor directo.
  3. Usa el editor proporcionado para crear o editar archivos fuente según sea necesario. Consulta Estructura del directorio del código fuente.
    • El panel izquierdo muestra los archivos fuente y te permite crear, borrar y cambiar el nombre de los archivos.
    • El panel derecho es un editor de texto que te permite editar el contenido de los archivos.
  4. Haz clic en Implementar.

Ejemplos de la línea de comandos

En esta sección, se muestran los comandos de implementación para algunas situaciones 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 HTTP del código fuente local

Supongamos que tienes una función HTTP como la siguiente:

  • La función usa nodejs20.
  • El código fuente se encuentra en el directorio de trabajo actual (.).
  • El punto de entrada en el código se llama myHttpFunction.

Para implementar la función con el nombre my-http-function en la región us-central1, usa el siguiente comando:

gcloud functions deploy my-http-function \
  --gen2 \
  --region=us-central1 \
  --runtime=nodejs20 \
  --source=. \
  --entry-point=myHttpFunction \
  --trigger-http

Función de Pub/Sub del código fuente en Cloud Storage

Supongamos que tienes una función controlada por eventos como la siguiente:

  • La función controla los eventos de publicación de mensajes de Pub/Sub.
  • La función usa python312.
  • El código fuente se encuentra en Cloud Storage, en la ruta. gs://my-bucket/my_function_source.zip.
  • El punto de entrada en el código se llama pubsub_handler.

Para implementar la función 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 siguiente comando:

gcloud functions deploy my-pubsub-function \
  --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 controlada por eventos como la siguiente:

  • La función controla los eventos de eliminación de objetos de Cloud Storage.
  • La función usa java17.
  • El código fuente se encuentra en la ruta ./functions/storage-function de forma local.
  • El punto de entrada en el código se llama myproject.StorageFunction.

Para implementar la función 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 siguiente comando:

gcloud functions deploy my-storage-function \
  --gen2 \
  --region=asia-northeast1 \
  --runtime=java17 \
  --source=./functions/storage-function \
  --entry-point=myproject.StorageFunction \
  --trigger-event-filters="type=google.cloud.storage.object.v1.deleted" \
  --trigger-event-filters="bucket=my-bucket"

Próximos pasos