Desplegar una función de Cloud Run (1.ª gen.)

En esta guía se explica cómo desplegar una función de Cloud Run de 1.ª gen. antigua a partir del código fuente. Si vas a crear una función, consulta la guía de inicio rápido de la consola de Cloud Run.

El proceso de despliegue toma el código fuente y los ajustes de configuración, y crea una imagen ejecutable que Cloud Run gestiona automáticamente para gestionar las solicitudes a tu función.

Conceptos básicos sobre las implementaciones

Los usuarios que implementen funciones de Cloud Run deben tener el rol de gestión de identidades y accesos Desarrollador de funciones de Cloud Run o un rol que incluya los mismos permisos. Consulta también la sección Configuración adicional para la implementación.

Para desplegar una función con la CLI de gcloud, sigue estos pasos:

  1. Usa el comando gcloud functions deploy para desplegar 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 desplegada. El nombre de la función debe empezar por 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.

    • La marca --gen2 especifica que quieres desplegar en Cloud Run Functions. A partir de septiembre del 2024, esta opción será la predeterminada. Para implementarlo en la 1.ª gen., usa --no-gen2.

    • La marca --region especifica la región en la que se desplegará la función. Consulta la sección Ubicaciones para ver la lista de regiones admitidas por las funciones de Cloud Run.

    • La marca --runtime especifica qué tiempo de ejecución de lenguaje usa tu función. Cloud Run Functions admite varios tiempos de ejecución. Consulta Tiempos 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 información:

    • La marca --entry-point especifica el punto de entrada de la función en el código fuente. Este es el código que se ejecutará cuando se ejecute la función. El valor de esta marca debe ser un nombre de función o un nombre de clase completo que exista en el 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 necesitan marcas adicionales (representadas como TRIGGER_FLAGS arriba), en función del activador que quieras usar:

      Marcas de activadores Descripción del activador
      --trigger-http Activa la función con una solicitud HTTP(S). Consulta más información sobre los desencadenadores HTTP.
      --trigger-topic=YOUR_PUBSUB_TOPIC Activa la función cuando se publique un mensaje en el tema de Pub/Sub especificado. Para obtener más información, consulta la sección sobre activadores de Pub/Sub.
      --trigger-bucket=YOUR_STORAGE_BUCKET Activa la función cuando se cree o se sobrescriba un objeto en el segmento de Cloud Storage especificado. Consulta más información sobre los activadores de Cloud Storage.
      --trigger-event=EVENT_TYPE
      [--trigger-resource=RESOURCE]
      Activa la función cuando se produzca el evento especificado. Es obligatorio especificar un recurso para algunos tipos de eventos. Para obtener más información, consulta Activadores compatibles con Cloud Functions (1.ª gen.) .

      Cuando implementas una función, puedes especificar opciones adicionales de configuración, redes y seguridad.

      Para obtener una referencia completa sobre el 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.

Desplegar desde tu máquina local

En esta sección se describe cómo usar la CLI de gcloud para desplegar una función a partir del 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.

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

    También puedes usar la marca --stage-bucket para especificar un segmento de Cloud Storage en el que subir el código fuente como parte del despliegue.

    Durante la subida del código fuente, Cloud Run Functions excluye los archivos innecesarios mediante el archivo .gcloudignore.

  3. Desplegar desde Cloud Storage

    En esta sección se describe cómo usar la CLI de gcloud para desplegar una función a partir del código fuente ubicado en un segmento de Cloud Storage. El código fuente debe empaquetarse como un archivo ZIP.

    Para que las funciones de Cloud Run puedan leer datos de un segmento de Cloud Storage, debes conceder el permiso storage.objects.get a la cuenta que realice el despliegue.

    Consulta Usar permisos de gestión de identidades y accesos en la documentación de Cloud Storage para obtener información sobre cómo controlar el acceso a los segmentos.

    Con este permiso, ahora puedes desplegar 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.

      En el caso de la marca --source, especifica una ruta de Cloud Storage que empiece por gs://. El objeto de la ruta debe ser un archivo ZIP que contenga el código fuente de la función. Los archivos de origen de la función deben estar en la raíz del archivo ZIP. Consulta la sección Estructura del directorio de origen.

    3. Ejemplos de línea de comandos

      En esta sección se muestran comandos de implementación para algunos ejemplos de situaciones de implementación.

      Para obtener información sobre los diferentes activadores compatibles con Cloud Run Functions, consulta Activadores de Cloud Run Functions.

      Función HTTP desde código fuente local

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

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

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

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

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

      Supongamos que tiene una función basada en eventos como la siguiente:

      • La función gestiona 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 gs://my-bucket/my_function_source.zip.
      • El punto de entrada del código se llama pubsub_handler.

      Para desplegar 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 los mensajes del tema de Pub/Sub my-topic, usa el siguiente comando:

      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 a partir de código fuente local

      Supongamos que tiene una función basada en eventos como la siguiente:

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

      Para desplegar la función en Cloud Run Functions con el nombre my-storage-function en la región asia-northeast1 y que la función se active con eventos del segmento de Cloud Storage my-bucket, usa el siguiente comando:

      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
      

      Pasos siguientes