Executando Comandos em um Sandbox
Execute comandos de shell, aguarde saída, eventos de fluxo e cancele o trabalho em um sandbox em execução.
Comece com um sandbox no estado RUNNING. Defina seu perfil de autenticação de sessão, região e ID de sandbox:
profile_name="DEFAULT"
region="us-chicago-1"
sandbox_id="SANDBOX_ID"Executando um Comando e Aguardando Saída
Use run-and-wait para um comando cujo resultado você deseja 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 PT5MInspecione o ID do comando retornado, a saída padrão, o erro padrão e o código de saída. Um código de saída diferente de zero indica que o comando reportou um erro.
Saída de Streaming
Use run-and-stream para ler a saída à medida que o comando for executado. Este exemplo imprime três mensagens:
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 -Iniciando um Comando de Forma Assíncrona
Use run para iniciar um comando e salvar seu ID para recuperação ou cancelamento de saída:
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 saída 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 0Ou eventos de fluxo para o 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 0O valor da sequência 0 inicia a recuperação desde o início.
Cancelando um Comando
Para solicitar o encerramento de um comando em execução, envie 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 um comando e interromper o sandbox são operações separadas. Consulte Interrompendo um Sandbox para encerrar o runtime.
Executando um Serviço em uma Porta Publicada
Ao criar o sandbox, use --publish-ports para expor a porta de que seu serviço precisa. Por exemplo:
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)As portas publicadas não têm autenticação de aplicativo fornecida pela plataforma. Qualquer pessoa que obtenha um URL publicado pode acessar essa porta enquanto o sandbox é executado, a menos que seu aplicativo restrinja o acesso. Adicione autenticação quando necessário e publique apenas as portas necessárias para sua carga de trabalho.
Para uma visualização temporária contendo apenas arquivos não sensíveis, inicie um servidor em um diretório 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 PT30MObtenha a sandbox e leia a entrada published-ports cuja key é 8080. Seu value é o URL do serviço:
oci --profile "$profile_name" --auth security_token --region "$region" \
generative-ai-sandbox sandbox get \
--sandbox-id "$sandbox_id"Aguarde o servidor estar pronto antes de se conectar. Interrompa o comando ou o sandbox quando terminar a visualização.