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:

  1. 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 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 --gen2 especifica 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 --region especifica 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 --runtime especifica 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 --source especifica la ubicación del código fuente de la función. Consulta las secciones siguientes para obtener más detalles:

    • La marca --entry-point especifica 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_FLAGS en el ejemplo anterior), según el activador que desees usar:

      Marcas del activador Descripción del activador
      --trigger-http Activa la función con una solicitud HTTP(S). Consulta Activadores HTTP para obtener más información.
      --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. 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.

  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 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-bucket con 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.

  3. 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:

    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 acceso de Cloud Storage que empiece con gs://. 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.

    3. 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:

      • 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.

      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:

      • 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.

      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:

      • 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.

      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
      

      Próximos pasos