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 PT5MInspeccione 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 0O 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 0El 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 SIGTERMCancelar 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)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 PT30MObtenga 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.