Sandbox.shell() を使用します。生バイトのストリーミングに対応し、出力のバッファリングを行わない TerminalSession を返します。対話的な使用向けに設計されています。バッチでコマンドを実行する場合は、代わりに exec() を使用します。
認証を選択する
セクション内で CKS が指定されている場合を除き、これらの例はサーバーレスキャパシティ上で実行されます。サンドボックスを所有するアカウントの認証情報を選択してください。キーまたはトークンを取得するには、認証情報の選択と取得を参照してください。 インストールコマンドは、有効化した Python 仮想環境内で実行してください。 使用する認証情報のタブにある Python コードを、このページで実行する Python スクリプトと同じディレクトリにsandbox_auth.py として保存してください。このファイルに保存されるのはどの認証方式を使うかという設定であり、認証情報そのものは含まれません。各例ではこのファイルから AUTH をインポートし、新しいサンドボックスまたは Session を作成するたびに明示的に渡します。
- Forge API キー
- CoreWeave API アクセストークン
SDK の W&B 認証方式で Forge APIキーを使用します。
sandbox_auth.py
SandboxDefaults で placement_mode="cks" を設定してください。auth=AUTH を指定して Session を作成すると、その Session が所有するサンドボックスも認証されます。サンドボックスへの再接続、一覧表示、クリーンアップを行う際も、同じ認証情報を使用してください。
シェルセッション
サンドボックスを作成し、インタラクティブシェルのセッションを開きます。コマンドを指定せずにSandbox.run() を呼び出すと、デフォルトの長時間実行コマンドが使用されます。以降のサンプルは、このコンテキストが引き続き実行中であることを前提としています。
shell() は常に TTY を割り当て、stdin を有効にします。返される TerminalSession は、UTF-8 のデコードやエンコードの往復なしに生のバイトをストリーミングするため、ターミナルのエスケープシーケンスやバイナリ出力に対して安全です。
コマンドを送信して出力を読み取る
ターミナルセッションを開いた状態で、stdin にコマンドを書き込み、リモートシェルからマージされたバイト出力をストリームで返します。TerminalSession は出力をバッファしません。stdout と stderr は、terminal.output 上の単一の生バイトストリームにマージされます。結果に個別の stdout 属性や stderr 属性はありません。terminal.output は継続的に読み取ってください。読み取りを止めると、上限付きキューのバックプレッシャーによってリモートセッションが停止します。
ターミナルのサイズ変更
ターミナルのサイズが変わったときに、サイズ変更メッセージを送信します。resize() は TerminalSession でファイア・アンド・フォーゲットです。
シェルセッションの終了
stdin を閉じるか、終了コマンドを送信して、シェルセッションを終了します。terminal.wait() または terminal.result() を呼び出して、終了コードが返されるまでブロックします。
ローカルターミナルをアタッチする
実行中のサンドボックスを自分のターミナルから操作するには、ローカルターミナルを raw モードに切り替え、その入力をshell() セッションに転送します。次のスクリプトは、ID を指定して既存のサンドボックスにアタッチし、キー入力をサンドボックス内の Bash シェルに転送します。シェルが終了すると、ローカルターミナルの設定を元に戻します。このスクリプトは termios を使用するため、macOS または Linux で動作します。
スクリプトを attach_sandbox.py という名前で sandbox_auth.py と同じディレクトリに保存します。
attach_sandbox.py
[SANDBOX-ID] を実行中のサンドボックスの ID に置き換えてから、対話型ターミナルでスクリプトを実行します。
コマンドと使用例
関連項目
- コマンドの実行 -
exec()でコマンドを実行します。 - サンドボックス ログ - コンテナーのログをストリーミングします。