Exécution de commandes dans un bac à sable
Exécuter les commandes de l'interpréteur de commandes, attendre la sortie, diffuser les événements et annuler le travail dans un bac à sable en cours d'exécution.
Commencez par un bac à sable à l'état RUNNING. Définissez votre profil d'authentification de session, votre région et votre ID bac à sable :
profile_name="DEFAULT"
region="us-chicago-1"
sandbox_id="SANDBOX_ID"Exécution d'une commande et attente de sortie
Utilisez run-and-wait pour une commande dont vous voulez obtenir le résultat avant de continuer :
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 PT5MExaminez l'ID commande, la sortie standard, l'erreur standard et le code de sortie renvoyés. Un code de sortie différent de zéro indique que la commande a signalé une erreur.
Sortie de diffusion en continu
Utilisez run-and-stream pour lire la sortie lors de l'exécution de la commande. L'exemple suivant présente trois messages :
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 -Démarrer une commande de manière asynchrone
Utilisez run pour démarrer une commande et enregistrer son ID pour l'extraction ou l'annulation de la sortie :
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)Extraire la sortie capturée :
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 diffusez des événements pour la commande existante :
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 0La valeur de séquence 0 commence l'extraction depuis le début.
Annuler une commande
Pour demander l'arrêt d'une commande en cours d'exécution, envoyez 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'annulation d'une commande et l'arrêt du bac à sable sont des opérations distinctes. Voir Arrêt d'un bac à sable pour mettre fin à l'exécution.
Exécution d'un service sur un port publié
Lors de la création du bac à sable, utilisez --publish-ports pour exposer le port dont votre service a besoin. Par exemple :
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)Les ports publiés n'ont pas d'authentification d'application fournie par la plate-forme. Toute personne qui obtient une URL publiée peut accéder à ce port pendant l'exécution du bac à sable, sauf si votre application restreint l'accès. Ajoutez l'authentification si nécessaire et publiez uniquement les ports dont votre charge de travail a besoin.
Pour une prévisualisation temporaire contenant uniquement des fichiers non sensibles, démarrez un serveur dans un répertoire dédié :
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 PT30MObtenez le bac à sable et lisez l'entrée published-ports dont key est 8080. Sa valeur value est l'URL du service :
oci --profile "$profile_name" --auth security_token --region "$region" \
generative-ai-sandbox sandbox get \
--sandbox-id "$sandbox_id"Attendez que le serveur soit prêt avant de vous connecter. Arrêtez la commande ou le bac à sable lorsque vous avez terminé la prévisualisation.