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 PT5MEsaminare 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 0Oppure 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 0Il 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 SIGTERML'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)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 PT30MOttenere 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.