Ejecución de comandos en un sandbox

Ejecute comandos de shell, espere a la salida, los eventos de flujo y cancele el trabajo en un sandbox en ejecución.

Comience con un sandbox en el estado RUNNING. Defina su perfil de autenticación de sesión, región e ID de sandbox:

profile_name="DEFAULT"
region="us-chicago-1"
sandbox_id="SANDBOX_ID"

Ejecución de un comando y espera de salida

Utilice run-and-wait para un comando cuyo resultado desee antes de continuar:

oci --profile "$profile_name" --auth security_token --region "$region" \
  generative-ai-sandbox sandbox-command run-and-wait \
  --sandbox-id "$sandbox_id" \
  --command "pwd && ls -la /workspace" \
  --timeout PT5M

Inspeccione el ID de comando devuelto, la salida estándar, el error estándar y el código de salida. Un código de salida distinto de cero indica que el comando informó un error.

Salida de Streaming

Utilice run-and-stream para leer la salida mientras se ejecuta el comando. En este ejemplo, se imprimen tres mensajes:

oci --profile "$profile_name" --auth security_token --region "$region" \
  generative-ai-sandbox sandbox-command run-and-stream \
  --sandbox-id "$sandbox_id" \
  --command "sh -lc 'for i in 1 2 3; do echo message-\$i; sleep 1; done'" \
  --timeout PT5M \
  --file -

Inicio de un comando de forma asíncrona

Utilice run para iniciar un comando y guardar su ID para la recuperación o cancelación de salida:

command_id=$(oci --profile "$profile_name" --auth security_token --region "$region" \
  generative-ai-sandbox sandbox-command run \
  --sandbox-id "$sandbox_id" \
  --command "sleep 30" \
  --timeout PT2M \
  --query 'data.id' --raw-output)

Recuperar salida capturada:

oci --profile "$profile_name" --auth security_token --region "$region" \
  generative-ai-sandbox sandbox-command get-output \
  --sandbox-id "$sandbox_id" \
  --command-id "$command_id" \
  --from-seq 0

O eventos de flujo para el comando existente:

oci --profile "$profile_name" --auth security_token --region "$region" \
  generative-ai-sandbox sandbox-command stream \
  --sandbox-id "$sandbox_id" \
  --command-id "$command_id" \
  --from-seq 0

El valor de secuencia 0 inicia la recuperación desde el principio.

Cancelación de un comando

Para solicitar la terminación de un comando en ejecución, envíe SIGTERM:

oci --profile "$profile_name" --auth security_token --region "$region" \
  generative-ai-sandbox sandbox-command cancel \
  --sandbox-id "$sandbox_id" \
  --command-id "$command_id" \
  --signal SIGTERM

Cancelar un comando y detener el sandbox son operaciones separadas. Consulte Parada de un sandbox para finalizar el tiempo de ejecución.

Ejecución de un Servicio en un Puerto Publicado

Al crear el sandbox, utilice --publish-ports para exponer el puerto que necesita su servicio. Por ejemplo:

project_id="PROJECT_OCID"

sandbox_id=$(oci --profile "$profile_name" --auth security_token --region "$region" \
  generative-ai-sandbox sandbox create \
  --project-id "$project_id" \
  --display-name preview-sandbox \
  --runtime python-3.11 \
  --shape SMALL \
  --publish-ports '["8080"]' \
  --expiration-duration PT30M \
  --wait-for-state RUNNING \
  --query 'data.id' --raw-output)
Importante

Los puertos publicados no tienen autenticación de aplicación proporcionada por la plataforma. Cualquier persona que obtenga una URL publicada puede acceder a ese puerto mientras se ejecuta el sandbox, a menos que la aplicación restrinja el acceso. Agregue autenticación cuando sea necesario y publique solo los puertos que necesite su carga de trabajo.

Para una vista previa temporal que contenga sólo archivos no sensibles, inicie un servidor en un directorio dedicado:

oci --profile "$profile_name" --auth security_token --region "$region" \
  generative-ai-sandbox sandbox-command run \
  --sandbox-id "$sandbox_id" \
  --command "mkdir -p /workspace/preview && python3 -m http.server 8080 --bind 0.0.0.0 --directory /workspace/preview" \
  --timeout PT30M

Obtenga el sandbox y lea la entrada published-ports cuyo valor key es 8080. Su value es la URL del servicio:

oci --profile "$profile_name" --auth security_token --region "$region" \
  generative-ai-sandbox sandbox get \
  --sandbox-id "$sandbox_id"

Espere a que el servidor esté preparado antes de conectarse. Detenga el comando o el sandbox cuando termine la vista previa.