Метаданные песочницы
Метаданные связывают песочницу с сущностями приложения: сессией, пользователем, задачей или окружением. Ключи и значения — строки. Они возвращаются при получении информации и списка песочниц.
mjs
import { Sandbox } from "@abox-dev/sdk";
const sandbox = await Sandbox.create({
metadata: { sessionId: "session-42", environment: "development" },
});
try {
const paginator = Sandbox.list({
query: { metadata: { sessionId: "session-42" } },
});
const sandboxes = await paginator.nextItems();
console.log(sandboxes[0].metadata);
} finally {
await sandbox.kill();
}py
from agentbox import Sandbox, SandboxQuery
sandbox = Sandbox.create(
metadata={"sessionId": "session-42", "environment": "development"}
)
try:
paginator = Sandbox.list(
query=SandboxQuery(metadata={"sessionId": "session-42"})
)
sandboxes = paginator.next_items()
print(sandboxes[0].metadata)
finally:
sandbox.kill()go
package main
import (
"context"
"fmt"
"log"
"github.com/abox-dev/sdk/packages/go-sdk"
)
func kill(sandbox *agentbox.Sandbox) {
if _, err := sandbox.Kill(context.Background()); err != nil {
log.Printf("cleanup sandbox: %v", err)
}
}
func run() (err error) {
ctx := context.Background()
client, err := agentbox.NewClient()
if err != nil {
return err
}
sandbox, err := client.Sandboxes.Create(ctx, &agentbox.CreateSandboxOptions{
Metadata: map[string]string{
"sessionId": "session-42", "environment": "development",
},
})
if err != nil {
return err
}
defer kill(sandbox)
page, err := client.Sandboxes.List(ctx, &agentbox.ListSandboxOptions{
Metadata: map[string]string{"sessionId": "session-42"},
})
if err != nil {
return err
}
fmt.Println(*page.Items[0].Metadata)
return nil
}
func main() {
if err := run(); err != nil {
log.Fatal(err)
}
}Фильтрация выполняется в API AgentBox, поэтому приложению не нужно сначала загружать все песочницы. Несколько пар выбирают песочницы, которые совпадают по каждой из них.
Метаданные доступны участникам проекта и клиентам API. Не храните в них API-ключи, пароли и другие секреты. Передавайте секреты среды выполнения через предназначенный для этого механизм или переменные окружения с нужной областью доступа.