Esecuzione di comandi in una sandbox

Eseguire i comandi shell, attendere l'output, eseguire lo streaming degli eventi e annullare il lavoro in una sandbox in esecuzione.

Iniziare con una sandbox in stato RUNNING. Impostare il profilo di autenticazione della sessione, l'area e l'ID sandbox:

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

Esecuzione di un comando e attesa dell'output

Utilizzare run-and-wait per un comando il cui risultato si desidera prima di continuare:

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

Esaminare l'ID comando, l'output standard, l'errore standard e il codice di uscita restituiti. Un codice di uscita diverso da zero indica che il comando ha segnalato un errore.

Output streaming

Usare run-and-stream per leggere l'output durante l'esecuzione del comando. In questo esempio vengono stampati tre messaggi:

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 -

Avvio asincrono di un comando

Utilizzare run per avviare un comando e salvarne l'ID per il recupero o l'annullamento dell'output:

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)

Recupera output acquisito:

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

Oppure eseguire il flusso degli eventi per il comando esistente:

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

Il valore della sequenza 0 inizia il recupero dall'inizio.

Annullamento di un comando

Per richiedere l'interruzione di un comando in esecuzione, inviare 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

L'annullamento di un comando e l'arresto della sandbox sono operazioni distinte. Vedere Arresto di una sandbox per terminare il runtime.

Esecuzione di un servizio su una porta pubblicata

Quando si crea la sandbox, utilizzare --publish-ports per esporre la porta richiesta dal servizio. Ad esempio:

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

Le porte pubblicate non dispongono di autenticazione dell'applicazione fornita dalla piattaforma. Chiunque ottenga un URL pubblicato può raggiungere tale porta durante l'esecuzione della sandbox a meno che l'applicazione non limiti l'accesso. Aggiungere l'autenticazione quando necessario e pubblicare solo le porte richieste dal carico di lavoro.

Per un'anteprima temporanea contenente solo file non riservati, avviare un server in una directory dedicata:

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

Ottenere la sandbox e leggere la voce published-ports il cui key è 8080. Il relativo value è l'URL del servizio:

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

Attendere che il server sia pronto prima di connettersi. Arrestare il comando o la sandbox al termine dell'anteprima.