← Sandbox SDK / sandbox / api
Хранилище
Подключайте бакеты S3-совместимого хранилища (R2, S3, GCS) в файловую систему песочницы для постоянного доступа к данным. mountBucket() поддерживает монтирование через привязку R2, локальную синхронизацию привязки R2 при разработке и монтирование удаленных S3-совместимых конечных точек.
Методы
mountBucket()
Подключение S3-совместимого бакета к локальному пути в песочнице.
await sandbox.mountBucket(
bucket: string,
mountPath: string,
options?: MountBucketOptions
): Promise<void>Параметры:
bucket- Идентификатор бакета- Когда
options.endpointне указан, передайте имя привязки Worker R2 (например,"MY_BUCKET") - Когда
options.endpointуказан, передайте имя удаленного бакета (например,"my-r2-bucket")
- Когда
mountPath- Путь в локальной файловой системе для монтирования (например,"/data")options(необязательно) - Конфигурация монтирования (см.MountBucketOptions)
// Mount an R2 bucket by Worker binding name
await sandbox.mountBucket("MY_BUCKET", "/data");
// Read/write files directly
const data = await sandbox.readFile("/data/config.json");
await sandbox.writeFile("/data/results.json", JSON.stringify(data));
// Mount a remote S3-compatible bucket, including explicit R2 endpoints
await sandbox.mountBucket("my-bucket", "/storage", {
endpoint: "https://s3.amazonaws.com",
credentials: {
accessKeyId: env.AWS_ACCESS_KEY_ID,
secretAccessKey: env.AWS_SECRET_ACCESS_KEY,
},
});
// Mount an R2 bucket during local development with wrangler dev
await sandbox.mountBucket("MY_BUCKET", "/local-data", {
localBucket: true,
});
// Mount a prefix from an R2 binding
await sandbox.mountBucket("MY_BUCKET", "/user-data", {
prefix: "/users/user-123",
readOnly: true,
});// Mount an R2 bucket by Worker binding name
await sandbox.mountBucket('MY_BUCKET', '/data');
// Read/write files directly
const data = await sandbox.readFile('/data/config.json');
await sandbox.writeFile('/data/results.json', JSON.stringify(data));
// Mount a remote S3-compatible bucket, including explicit R2 endpoints
await sandbox.mountBucket('my-bucket', '/storage', {
endpoint: 'https://s3.amazonaws.com',
credentials: {
accessKeyId: env.AWS_ACCESS_KEY_ID,
secretAccessKey: env.AWS_SECRET_ACCESS_KEY
}
});
// Mount an R2 bucket during local development with wrangler dev
await sandbox.mountBucket('MY_BUCKET', '/local-data', {
localBucket: true
});
// Mount a prefix from an R2 binding
await sandbox.mountBucket('MY_BUCKET', '/user-data', {
prefix: '/users/user-123',
readOnly: true
});Исключения:
InvalidMountPointError- Недопустимый путь монтирования или конфликт с существующими точками монтированияBucketAccessError- Бакет не существует или недостаточно прав доступа
unmountBucket()
Отмонтируйте ранее смонтированный bucket.
await sandbox.unmountBucket(mountPath: string): Promise<void>Параметры:
mountPath- Путь монтирования bucket (например,"/data")
// Mount, process, unmount
await sandbox.mountBucket("MY_BUCKET", "/data");
await sandbox.exec("python process.py");
// Unmount
await sandbox.unmountBucket("/data");// Mount, process, unmount
await sandbox.mountBucket('MY_BUCKET', '/data');
await sandbox.exec('python process.py');
// Unmount
await sandbox.unmountBucket('/data');Типы
MountBucketOptions
interface RemoteMountBucketOptions {
endpoint: string;
provider?: BucketProvider;
credentials?: BucketCredentials;
credentialProxy?: boolean;
readOnly?: boolean;
s3fsOptions?: string[];
prefix?: string;
}
interface LocalMountBucketOptions {
localBucket: true;
prefix?: string;
readOnly?: boolean;
}
interface R2BindingMountBucketOptions {
endpoint?: never;
prefix?: string;
readOnly?: boolean;
s3fsOptions?: string[];
}
type MountBucketOptions =
| RemoteMountBucketOptions
| LocalMountBucketOptions
| R2BindingMountBucketOptions;mountBucket() поддерживает следующие три режима:
-
Монтирование R2 binding - Опустите
endpointдля подключения по имени привязки Worker в продакшене- Использует перехват исходящего трафика для R2 без учётных данных
- Поддерживает
prefix,readOnly, а такжеs3fsOptions
-
Локальное монтирование привязки R2 - Задайте
localBucket: trueво времяwrangler dev- Использует привязку R2 в Worker напрямую, через локальную синхронизацию
- Поддерживает
prefixиreadOnly
-
Монтирование через удалённую конечную точку - Задайте
endpointдля подключения любого S3-совместимого провайдера- Поддерживает явное указание
credentialsили автоматическое определение переменных окружения - Задайте
credentialProxy: trueчтобы учётные данные не попадали в контейнер (перехват исходящего трафика) - Поддерживает
provider,prefix,readOnly, а такжеs3fsOptions
- Поддерживает явное указание
Сведения о полях:
-
endpoint(только в режиме удалённой конечной точки) - URL S3-совместимой конечной точки- R2:
'https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com' - S3:
'https://s3.amazonaws.com' - GCS:
'https://storage.googleapis.com'
- R2:
-
localBucket(только в режиме локальной разработки) - Смонтируйте бакет R2 с помощью привязки R2 в Worker при локальной разработке сwrangler dev- Когда
true, SDK синхронизирует привязку R2 напрямую вместо использования конечной точки S3
- Когда
-
provider(только в режиме удалённой конечной точки) - Подсказка провайдера хранилища- Включает оптимизации для конкретного провайдера
- Значения:
'r2','s3','gcs'
-
credentials(только в режиме удалённой конечной точки) - Учётные данные API- Содержит
accessKeyIdиsecretAccessKey - Если не указано, используются переменные окружения
- Содержит
-
credentialProxy(только в режиме удалённой конечной точки) - Маршрутизация запросов S3 через Durable Object для подписи- Когда
true, учётные данные никогда не записываются на диск контейнера. Durable Object перехватывает все исходящие запросы S3 на сетевом уровне, заново подписывает их и только затем пересылает дальше. - Поддерживает AWS SigV4 ↗ подпись для S3-совместимых конечных точек (включая R2) и подпись HMAC для Google Cloud Storage
- Требует
ContainerProxyдолжен экспортироваться из точки входа вашего Worker - По умолчанию:
false(для обратной совместимости рекомендуется задать значениеtrue; станет значением по умолчанию в одной из будущих версий)
- Когда
-
readOnly(необязательно) - Монтирование в режиме только для чтения- По умолчанию:
false
- По умолчанию:
-
prefix(необязательно) - Подкаталог внутри бакета для монтирования- Если указано, в точке монтирования видно только содержимое, находящееся под этим префиксом
- Должно начинаться с
/(например,/data/uploadsили/data/uploads/) - По умолчанию: монтируется весь бакет
-
s3fsOptions(только в режимах привязки R2 и удалённой конечной точки) - Дополнительные флаги монтирования s3fs- Тип:
string[] - Пример:
['use_cache=/tmp/cache', 'stat_cache_expire=1']
- Тип:
BucketProvider
Подсказка о поставщике хранилища для автоматической оптимизации флага s3fs.
type BucketProvider = "r2" | "s3" | "gcs";'r2'- Cloudflare R2 (рекомендуется, применяетnomixuploadфлаг)'s3'- Amazon S3'gcs'- Google Cloud Storage
Дополнительные материалы
- Руководство по подключению бакетов - Полное руководство по монтированию бакетов
- Files API - Чтение и запись файлов