Usar una secuencia de comandos tras el inicio

En esta guía se describe cómo usar una secuencia de comandos posterior al inicio con Colab Enterprise. En esta guía también se describe cómo definir variables de entorno para usarlas con tu secuencia de comandos posterior al inicio.

Información general

Puedes usar una secuencia de comandos posterior al inicio para realizar tareas después del proceso de inicio de tu entorno de ejecución de Colab Enterprise. Por ejemplo, puedes usar una secuencia de comandos posterior al inicio para instalar paquetes específicos o hacer cambios específicos en la máquina virtual de tu tiempo de ejecución.

Para usar una secuencia de comandos posterior al inicio en Colab Enterprise, especifica la secuencia de comandos posterior al inicio al crear una plantilla de tiempo de ejecución. Después, cuando crees un tiempo de ejecución basado en esa plantilla, la secuencia de comandos posterior al inicio se ejecutará al final del proceso de inicio.

Ubicación de la secuencia de comandos tras el inicio

El URI de la secuencia de comandos posterior al inicio puede ser cualquiera de los siguientes:

  • Un URI de Cloud Storage: por ejemplo, gs://BUCKET_NAME/SCRIPT_FILE_NAME. Si tu secuencia de comandos posterior al inicio se almacena en Cloud Storage, debes usar un tiempo de ejecución con las credenciales de usuario final habilitadas. Esto se debe a que Colab Enterprise usa tus credenciales de usuario para acceder al segmento de Cloud Storage.
  • Una URL de HTTPS: por ejemplo, https://example.com/FOLDER_NAME/SCRIPT_FILE_NAME. No se admite el uso de una URL HTTPS al crear una plantilla de tiempo de ejecución con la consola Google Cloud .

Comportamiento de la secuencia de comandos tras el inicio

Puedes especificar el comportamiento de la secuencia de comandos posterior al inicio. Consulta la siguiente tabla:

Comportamiento Descripción
Ejecutar una vez (RUN_ONCE)

Predeterminado. Colab Enterprise ejecuta la secuencia de comandos posterior al inicio solo una vez, durante la creación del tiempo de ejecución.

Ejecutar cada inicio (RUN_EVERY_START)

Después de cada inicio, Colab Enterprise ejecuta la secuencia de comandos posterior al inicio. Por ejemplo, si el cierre por inactividad detiene el tiempo de ejecución, Colab Enterprise vuelve a ejecutar la secuencia de comandos posterior al inicio cuando se reinicia el tiempo de ejecución.

Descargar y ejecutar en cada inicio (DOWNLOAD_AND_RUN_EVERY_START)

Después de cada inicio, Colab Enterprise vuelve a descargar la secuencia de comandos posterior al inicio desde su fuente y, a continuación, la ejecuta.

Variables de entorno

Puedes especificar variables de entorno en tu plantilla de tiempo de ejecución y hacer referencia a esas variables en tu secuencia de comandos posterior al inicio.

Por ejemplo, puedes definir el proyecto de cuota mediante una variable de entorno. Puedes definir el proyecto de cuota en un ID de proyecto específico mediante GOOGLE_CLOUD_QUOTA_PROJECT, una variable común que se usa en las bibliotecas de cliente de Google Cloud.

Para usar una secuencia de comandos tras el inicio con variables de entorno, consulta Crear una plantilla de tiempo de ejecución con una secuencia de comandos tras el inicio y variables de entorno.

Hacer un seguimiento de los cambios en las secuencias de comandos posteriores al inicio y recuperarlas

Para hacer un seguimiento de los cambios en tu secuencia de comandos tras el inicio y habilitar la recuperación de una versión específica de la secuencia de comandos tras el inicio, almacena la secuencia de comandos tras el inicio en un segmento de Cloud Storage con la gestión de versiones de objetos habilitada. La gestión de versiones de objetos conserva los objetos eliminados como objetos con versiones que no son actuales y que permanecen accesibles en tu segmento hasta que se eliminan de forma explícita.

Para especificar una versión de tu secuencia de comandos posterior al inicio, añade #GENERATION_NUMBER al URI de la secuencia de comandos posterior al inicio cuando crees tu plantilla de tiempo de ejecución. Por ejemplo, gs://BUCKET_NAME/FOLDER_NAME/FILE_NAME.py#GENERATION_NUMBER. Para obtener más información sobre la gestión de versiones de objetos y los números de generación, consulte Gestión de versiones de objetos.

Cuando usas la Google Cloud consola para crear tu plantilla de tiempo de ejecución, no se admite especificar un número de generación para tu secuencia de comandos posterior al inicio.

Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI, Dataform, and Compute Engine APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI, Dataform, and Compute Engine APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. Roles obligatorios

    Para obtener los permisos que necesitas para crear una plantilla de entorno de ejecución en Colab Enterprise, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Colab Enterprise (roles/aiplatform.colabEnterpriseAdmin) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

    También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

    Crear una plantilla de tiempo de ejecución que use una secuencia de comandos posterior al inicio

    Para crear una plantilla de tiempo de ejecución que use una secuencia de comandos posterior al inicio, puedes usar la consola Google Cloud , la CLI de Google Cloud o la API REST.

    Consola

    Para crear una plantilla de tiempo de ejecución que use una secuencia de comandos posterior al inicio, sigue estos pasos:

    1. En la Google Cloud consola, ve a la página Plantillas de entorno de ejecución de Colab Enterprise.

      Ir a Plantillas de tiempo de ejecución

    2. Haz clic en  Nueva plantilla.

      Aparecerá el cuadro de diálogo Crear plantilla de tiempo de ejecución.

    3. En la sección Aspectos básicos del tiempo de ejecución, introduce un Nombre visible.

    4. En el menú Región, selecciona la región en la que quieres que esté tu plantilla de tiempo de ejecución.

    5. En la sección Entorno, en el campo Secuencia de comandos posterior al inicio, haga clic en Examinar y, a continuación, vaya a una secuencia de comandos posterior al inicio ubicada en Cloud Storage. Para obtener más información, consulta Ubicación de la secuencia de comandos posterior al inicio.

    6. En la URL de la secuencia de comandos tras el inicio, selecciona el comportamiento de la secuencia de comandos tras el inicio. El comportamiento predeterminado es Ejecutar una vez. Para obtener más información, consulta Comportamiento de las secuencias de comandos posteriores al inicio.

    7. En la sección Redes y seguridad, asegúrate de que la opción Habilitar credenciales de usuario final esté seleccionada.

    8. Completa el resto del cuadro de diálogo y, a continuación, haz clic en Crear.

      La plantilla de tiempo de ejecución aparecerá en la lista de la pestaña Plantillas de tiempo de ejecución.

    gcloud

    Antes de usar cualquiera de los datos de los comandos que se indican a continuación, haz las siguientes sustituciones:

    Ejecuta el siguiente comando:

    Linux, macOS o Cloud Shell

    gcloud colab runtime-templates create --display-name="DISPLAY_NAME" \
        --project=PROJECT_ID \
        --region=REGION \
        --machine-type=e2-standard-4 \
        --post-startup-script-url=POST_STARTUP_SCRIPT_URI \
        --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR

    Windows (PowerShell)

    gcloud colab runtime-templates create --display-name="DISPLAY_NAME" `
        --project=PROJECT_ID `
        --region=REGION `
        --machine-type=e2-standard-4 `
        --post-startup-script-url=POST_STARTUP_SCRIPT_URI `
        --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR

    Windows (cmd.exe)

    gcloud colab runtime-templates create --display-name="DISPLAY_NAME" ^
        --project=PROJECT_ID ^
        --region=REGION ^
        --machine-type=e2-standard-4 ^
        --post-startup-script-url=POST_STARTUP_SCRIPT_URI ^
        --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR

    Para obtener más información sobre el comando para crear una plantilla de tiempo de ejecución desde la línea de comandos, consulta la documentación de la CLI de gcloud.

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    Método HTTP y URL:

    POST https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates

    Cuerpo JSON de la solicitud:

    {
      "displayName": "DISPLAY_NAME",
      "machineSpec": {
        "machineType": "e2-standard-4"
      },
      softwareConfig: {
        postStartupScriptConfig: {
          postStartupScriptUrl: "POST_STARTUP_SCRIPT_URI",
          postStartupScriptBehavior: "POST_STARTUP_SCRIPT_BEHAVIOR"
        },
      },
      "networkSpec": {
        "enableInternetAccess": true
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates" | Select-Object -Expand Content
    Si la solicitud se completa correctamente, en el cuerpo de la respuesta se incluye una instancia de Operation.

    Para obtener más información, consulta la documentación de la API REST de notebookRuntimeTemplates.create.

    Crear el entorno de ejecución

    Después de crear una plantilla de tiempo de ejecución que use tu secuencia de comandos posterior al inicio, crea un tiempo de ejecución basado en esa plantilla. El tiempo de ejecución se inicia y la secuencia de comandos posterior al inicio se ejecuta según el comportamiento especificado. Consulta Crear un tiempo de ejecución.

    Crear una plantilla de tiempo de ejecución con una secuencia de comandos posterior al inicio y variables de entorno

    Para crear una plantilla de tiempo de ejecución que use un script posterior al inicio y variables de entorno, puedes usar la Google Cloud consola, la CLI de Google Cloud o la API REST.

    Consola

    Para crear una plantilla de tiempo de ejecución que use una secuencia de comandos posterior al inicio y variables de entorno, haz lo siguiente:

    1. En la Google Cloud consola, ve a la página Plantillas de entorno de ejecución de Colab Enterprise.

      Ir a Plantillas de tiempo de ejecución

    2. Haz clic en  Nueva plantilla.

      Aparecerá el cuadro de diálogo Crear plantilla de tiempo de ejecución.

    3. En la sección Aspectos básicos del tiempo de ejecución, introduce un Nombre visible.

    4. En el menú Región, selecciona la región en la que quieres que esté tu plantilla de tiempo de ejecución.

    5. En la sección Environment (Entorno), en el campo Post-startup script (Secuencia de comandos posterior al inicio), haga clic en Browse (Buscar) y, a continuación, vaya a una secuencia de comandos posterior al inicio ubicada en Cloud Storage. Para obtener más información, consulta Ubicación de la secuencia de comandos posterior al inicio.

    6. En la URL de la secuencia de comandos tras el inicio, selecciona el comportamiento de la secuencia de comandos tras el inicio. El comportamiento predeterminado es Ejecutar una vez. Para obtener más información, consulta el comportamiento de las secuencias de comandos posteriores al inicio.

    7. Para añadir una variable de entorno, haz clic en  Añadir variable de entorno y, a continuación, introduce un par de Clave y Valor. Para añadir más variables de entorno, repite este paso.

    8. En la sección Redes y seguridad, asegúrate de que la opción Habilitar credenciales de usuario final esté seleccionada.

    9. Completa el resto del cuadro de diálogo y, a continuación, haz clic en Crear.

      La plantilla de tiempo de ejecución aparecerá en la lista de la pestaña Plantillas de tiempo de ejecución.

    gcloud

    Antes de usar cualquiera de los datos de los comandos que se indican a continuación, haz las siguientes sustituciones:

    • DISPLAY_NAME: el nombre visible de tu plantilla de tiempo de ejecución.
    • PROJECT_ID: tu ID de proyecto.
    • REGION: la región en la que quieres que esté tu plantilla de tiempo de ejecución.
    • POST_STARTUP_SCRIPT_URI: el URI de tu secuencia de comandos posterior al inicio. Para obtener más información, consulta Ubicación de la secuencia de comandos posterior al inicio.
    • POST_STARTUP_SCRIPT_BEHAVIOR: el comportamiento de la secuencia de comandos tras el inicio. Consulta la sección Comportamiento de la secuencia de comandos tras el inicio.
    • ENV_VARIABLE_NAME: el nombre de una variable de entorno que se va a definir en tu tiempo de ejecución.
    • ENV_VARIABLE_VALUE: el valor de la variable de entorno que se va a definir en tu tiempo de ejecución.

    Ejecuta el siguiente comando:

    Linux, macOS o Cloud Shell

    gcloud colab runtime-templates create --display-name="DISPLAY_NAME" \
        --project=PROJECT_ID \
        --region=REGION \
        --machine-type=e2-standard-4 \
        --post-startup-script-url=POST_STARTUP_SCRIPT_URI \
        --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR \
        --set-env-vars=ENV_VARIABLE_NAME=ENV_VARIABLE_VALUE

    Windows (PowerShell)

    gcloud colab runtime-templates create --display-name="DISPLAY_NAME" `
        --project=PROJECT_ID `
        --region=REGION `
        --machine-type=e2-standard-4 `
        --post-startup-script-url=POST_STARTUP_SCRIPT_URI `
        --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR `
        --set-env-vars=ENV_VARIABLE_NAME=ENV_VARIABLE_VALUE

    Windows (cmd.exe)

    gcloud colab runtime-templates create --display-name="DISPLAY_NAME" ^
        --project=PROJECT_ID ^
        --region=REGION ^
        --machine-type=e2-standard-4 ^
        --post-startup-script-url=POST_STARTUP_SCRIPT_URI ^
        --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR ^
        --set-env-vars=ENV_VARIABLE_NAME=ENV_VARIABLE_VALUE

    Para obtener más información sobre el comando para crear una plantilla de tiempo de ejecución desde la línea de comandos, consulta la documentación de la CLI de gcloud.

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • REGION: la región en la que quieres que esté tu plantilla de tiempo de ejecución.
    • PROJECT_ID: tu ID de proyecto.
    • DISPLAY_NAME: el nombre visible de tu plantilla de tiempo de ejecución.
    • POST_STARTUP_SCRIPT_URI: el URI de tu secuencia de comandos posterior al inicio. Para obtener más información, consulta Ubicación de la secuencia de comandos posterior al inicio.
    • POST_STARTUP_SCRIPT_BEHAVIOR: el comportamiento de la secuencia de comandos tras el inicio. Consulta la sección Comportamiento de la secuencia de comandos tras el inicio.
    • ENV_VARIABLE_NAME: el nombre de una variable de entorno que se va a definir en tu tiempo de ejecución.
    • ENV_VARIABLE_VALUE: el valor de la variable de entorno que se va a definir en tu tiempo de ejecución.

    Método HTTP y URL:

    POST https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates

    Cuerpo JSON de la solicitud:

    {
      "displayName": "DISPLAY_NAME",
      "machineSpec": {
        "machineType": "e2-standard-4"
      },
      softwareConfig: {
        postStartupScriptConfig: {
          postStartupScriptUrl: "POST_STARTUP_SCRIPT_URI",
          postStartupScriptBehavior: "POST_STARTUP_SCRIPT_BEHAVIOR"
        },
        "env": [
          {
            "name": "ENV_VARIABLE_NAME",
            "value": "ENV_VARIABLE_VALUE"
          }
        ]
      },
      "networkSpec": {
        "enableInternetAccess": true
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates" | Select-Object -Expand Content
    Si la solicitud se completa correctamente, en el cuerpo de la respuesta se incluye una instancia de Operation.

    Para obtener más información, consulta la documentación de la API REST de notebookRuntimeTemplates.create.

    Crear el entorno de ejecución

    Después de crear una plantilla de tiempo de ejecución que use tu secuencia de comandos posterior al inicio, crea un tiempo de ejecución basado en esa plantilla. El tiempo de ejecución se inicia y la secuencia de comandos posterior al inicio se ejecuta según el comportamiento especificado. Consulta Crear un tiempo de ejecución.

    Prácticas recomendadas

    Ten en cuenta las siguientes prácticas recomendadas al usar secuencias de comandos posteriores al inicio con Colab Enterprise:

    • Controlar el acceso a las plantillas de tiempo de ejecución: para evitar que se hagan cambios no deseados en la configuración de tu secuencia de comandos posterior al inicio, usa roles y permisos de gestión de identidades y accesos para controlar quién puede crear y actualizar plantillas de tiempo de ejecución.
    • Controlar el acceso a la secuencia de comandos: para evitar que se hagan cambios no deseados en el archivo de la secuencia de comandos posterior al inicio, usa roles y permisos de gestión de identidades y accesos para controlar el acceso al segmento de Cloud Storage en el que se almacena la secuencia de comandos.
    • Usar la gestión de versiones de objetos: para monitorizar los cambios en la secuencia de comandos posterior al inicio y asegurarse de que la plantilla de tiempo de ejecución usa una versión específica de la secuencia de comandos, almacene la secuencia de comandos posterior al inicio en un segmento de Cloud Storage con la gestión de versiones de objetos habilitada. A continuación, incluya el número de generación en la ruta de la secuencia de comandos al crear la plantilla de tiempo de ejecución. Por ejemplo: gs://BUCKET_NAME/OBJECT_NAME1#GENERATION_NUMBER1. Para obtener más información, consulta Hacer un seguimiento de los cambios en los scripts posteriores al inicio y recuperarlos.
    • Evitar la exfiltración de datos: si tu organización lo requiere, puedes usar Controles de Servicio de VPC para evitar la exfiltración de datos.

    Limitaciones

    Ten en cuenta las siguientes limitaciones al usar secuencias de comandos posteriores al inicio con Colab Enterprise:

    • Para crear un tiempo de ejecución basado en una plantilla de tiempo de ejecución que incluya una secuencia de comandos posterior al inicio y que tenga habilitado el formato de codificación extendido de la UE, debes ser el propietario de ese tiempo de ejecución. Por ejemplo, un administrador no puede usar la API REST para crear un tiempo de ejecución que use una secuencia de comandos posterior al inicio para otro usuario.
    • No se admite la transmisión de variables de entorno a través de la secuencia de comandos posterior al inicio. Debe especificar las variables de entorno en la configuración del software tal como se describe en esta guía.
    • Para usar una secuencia de comandos posterior al inicio ubicada en Cloud Storage, debes usar un tiempo de ejecución con las credenciales del usuario final habilitadas y tus credenciales de usuario deben tener acceso al segmento de Cloud Storage.
    • Si usas la Google Cloud consola para crear tu plantilla de tiempo de ejecución, tu secuencia de comandos posterior al inicio debe estar ubicada en Cloud Storage. No se admiten secuencias de comandos posteriores al inicio en otras ubicaciones al crear tu plantilla de tiempo de ejecución mediante la consola Google Cloud .
    • No se puede especificar un número de generación para la secuencia de comandos posterior al inicio cuando se usa la consola Google Cloud para crear la plantilla de tiempo de ejecución.

    Siguientes pasos