Buckets and objects, with the edges tested.
The Cloud Storage JSON and XML APIs: buckets, objects, uploads, versioning, lifecycle and notifications to Pub/Sub.
Backed by: CloudBurrow's own server (next release); v0.1.0 uses fake-gcs-server CloudBurrow next release
In the console
What it covers
Cloud Storage is started by default. In v0.1.0 it is backed by fake-gcs-server; on main it is CloudBurrow’s own server, built to the API, and the only Cloud Storage backend (next release). Methods it has not built answer 501 naming the method, rather than a plausible empty answer.
- Buckets and objects over the JSON API
- Resumable uploads, ranged reads, generation preconditions and compose
- Notifications to Pub/Sub
- Object versioning, soft delete, retention policies and holds next release
- Lifecycle rules, CORS and HMAC keys next release
- The XML API with multipart uploads next release
Tested snippet
From docs/examples/ at main 82a2eb9. CI runs these blocks against CloudBurrow.
import uuid
from google.cloud import storage
client = storage.Client()
bucket = client.create_bucket(f"example-{uuid.uuid4().hex[:12]}")
bucket.blob("hello.txt").upload_from_string("hello")
assert bucket.blob("hello.txt").download_as_text() == "hello"
bucket.delete(force=True)
This block is run by CloudBurrow's Python suite in CI. If it stops working, CI fails. docs/examples/python.md
import assert from 'node:assert/strict';
import { randomUUID } from 'node:crypto';
import { Storage } from '@google-cloud/storage';
const apiEndpoint = process.env.STORAGE_EMULATOR_HOST;
delete process.env.STORAGE_EMULATOR_HOST;
const storage = new Storage({ apiEndpoint, projectId: process.env.GOOGLE_CLOUD_PROJECT });
const [bucket] = await storage.createBucket(`example-${randomUUID()}`);
await bucket.file('hello.txt').save('hello', { resumable: false });
const [data] = await bucket.file('hello.txt').download();
assert.equal(data.toString(), 'hello');
await bucket.deleteFiles({ force: true });
await bucket.delete();
This block is run by CloudBurrow's Node.js suite in CI. If it stops working, CI fails. docs/examples/node.md
What's verified
Cloud Storage (JSON API)
15 of 32 RPCs Verified in v0.1.0
34 of 87 RPCs Verified on main next release
Not supported
- Signed URLs: v0.1.0 accepts signed URLs on shape alone; on main, CloudBurrow's Storage server verifies V2 and V4 signatures and fails closed next release
- Bucket IAM is stored, never enforced (#504) next release
- ACLs, object IAM, managed folders (#828), folders,
bulkRestoreand the gRPC API answer 501 next release - Bucket listing is not scoped by project
Source: docs/compatibility.md at main 82a2eb9.
Questions
What backs Cloud Storage?
Are signed URLs checked?
Build against Google Cloud APIs, locally
Free and open source under Apache-2.0. No account, no sign-up, no Google Cloud bill.