最も簡単な手順で最初の PAI-Instant Service インスタンスを作成します。インスタントサービスを作成し、パブリックテンプレートからインスタンスを起動し、E2B SDK でコマンドを実行し、インスタンスを破棄します。
前提条件
PAI-Instant Service を使用する前に、次の準備が完了していることを確認してください。
Alibaba Cloud アカウントが有効化され、実名認証が完了していること。
PAI が有効化され、PAI ワークスペースが作成されていること。
EAS 専用マシンの従量課金購入ページで、インスタントサービスのコンピューティングリソースが購入されていること。
(任意) カスタムイメージからテンプレートを作成するには、Container Registry (ACR) を有効化し、Standard または Premium の ACR Enterprise Edition インスタンス を作成します。パブリックテンプレートのみを使用する場合、ACR は不要です。
(任意) E2B Python SDK を使用する場合、v2.25.0 より前のバージョンのみがサポートされます。
ステップ1:インスタントサービスの作成
PAI コンソールにログインします。左側のナビゲーションペインで [Elastic Algorithm Service (EAS)] を選択し、サービス一覧ページに移動します。
上部の 即時サービス タブに切り替えます。
インスタントサービスの作成 をクリックし、次のようにパラメーターを設定します。他のパラメーターはデフォルト値のままにします。
[名前]:カスタム名を入力します (例:
quickstart)。[リソースタイプ]:EAS リソースグループ を選択します。
[リソースグループ]:購入したインスタントサービスのリソースグループを選択します。
[送信接続方式]:共有パブリックネットワーク を選択します。
確認 をクリックして作成を完了します。
パラメーターと詳細設定については、「インスタントサービスとテンプレートの管理」をご参照ください。
ステップ2:パブリックテンプレートの選択
PAI-Instant Service は、code-interpreter、browser、desktop などのすぐに使えるパブリックテンプレートを提供しています。このガイドでは code-interpreter を使用するため、カスタムテンプレートは必要ありません。
インスタントサービスワークベンチに移動します。
即時サービス タブで、ステップ1で作成したインスタントサービスを見つけます。呼び出し 列で、即時サービスワークベンチ アイコンをクリックします。
即時サービスワークベンチへ移動 ダイアログボックスで、リンクの管理 または 読み取り専用リンク の URL をコピーし、ブラウザーで開きます。
公開テンプレートリストで、
code-interpreterを選択し、テンプレート ID をクリックしてテンプレート詳細ページに移動します。テンプレート詳細ページの右上隅にある [SDK Access] をクリックして、SDK 接続設定と Python サンプルコードを取得します。
ステップ3:SDK を使用したインスタンスの作成とコマンドの実行
E2B SDK のインストール
pip install "e2b<2.25.0"完全な例
次の例は、インスタンスの作成、インスタンス情報の取得、コマンドの実行、ファイルの読み書き、インスタンスの破棄という、一連のインスタンスワークフローを示しています。
<YOUR-API-TOKEN> と <YOUR-DOMAIN> をステップ 2 で取得した値で置き換えます。
import os
from e2b import Sandbox
import time
# 1. 認証情報を設定
os.environ["E2B_API_KEY"] = "<YOUR-API-TOKEN>"
os.environ["E2B_DOMAIN"] = "<YOUR-DOMAIN>"
# 2. インスタンスを作成
sandbox = Sandbox.create(
template="<YOUR-TEMPLATE-ID>",
timeout=300000, # タイムアウト (ミリ秒)
)
print(f"Sandbox ID: {sandbox.sandbox_id}")
# インスタンスが実行中になるまで待機
print("Waiting for sandbox to be ready...")
max_attempts = 30
for attempt in range(1, max_attempts + 1):
try:
is_running = sandbox.is_running()
status = "Running" if is_running else "Not Running"
print(f" [{attempt}/{max_attempts}] Sandbox status: {status}")
if is_running:
print(" ✓ Sandbox is now running!")
break
except Exception as e:
print(f" [{attempt}/{max_attempts}] Failed to check status: {e}")
if attempt < max_attempts:
time.sleep(2)
# 3. インスタンスの詳細 (メタデータとダッシュボード URL を含む) を取得
info = sandbox.get_info()
print(f"State: {info.state}")
print(f"CPU: {info.cpu_count}, Memory: {info.memory_mb}MB")
# メタデータを表示
if info.metadata:
print("\nMetadata:")
for key, value in info.metadata.items():
print(f" {key}: {value}")
# ダッシュボード URL を取得
dashboard_url = info.metadata.get('sandbox.alicloud.com/dashboard-url') or \
info.metadata.get('dashboard_url')
if dashboard_url:
print(f"\nDashboard URL: {dashboard_url}")
# 4. コマンドを実行
result = sandbox.commands.run("echo 'Hello, World!'")
print(result.stdout)
# 5. ファイル操作
sandbox.files.write("/tmp/test.txt", "Hello from sandbox!")
content = sandbox.files.read("/tmp/test.txt")
print(content)
# 6. クリーンアップ
sandbox.kill() ステップ4:リソースのクリーンアップ
sandbox.kill()を呼び出してインスタンスを破棄すると、コンピューティングリソースとシステムディスクの両方の課金が停止されます。インスタントサービスワークベンチの [Instance list] でインスタンスを見つけ、[Delete] をクリックして破棄することもできます。
インスタントサービスが不要になった場合は、インスタントサービスリストから削除できます。
kill() を呼び出していない、または timeout に達していないインスタンスは、引き続き課金されます。 一時停止中のインスタンスも、実行中と同じ料金で課金されます。 詳細については、「課金」をご参照ください。
次のステップ
SDK によるライフサイクル、コマンド、ファイル操作の詳細:E2B SDK の統合
ブラウザー、デスクトップ、コーディングなどの環境向けパブリックテンプレートの使用:パブリックテンプレートの使用
コンソールターミナル、VNC、ファイル管理などのパネルを使用したインスタンスのデバッグ:インスタンスの管理
カスタムイメージテンプレートの作成:インスタントサービスとテンプレートの管理