Skip to main content
Open Source · Apache-2.0
radosgw-admin — Ceph RGW admin operations illustrated

Ceph Admin Ops. Effortlessly.

The Node.js SDK that covers every RADOS Gateway Admin endpoint. No transitive deps. Full TypeScript.

0Modules
0Methods
0Transitive Deps
0Tests

Works with your stack

Ceph Pacific+Ceph Pacific+
RookRook
KubernetesKubernetes
OpenShift / ODFOpenShift / ODF
Node.js 18+Node.js 18+
BunBun
TypeScriptTypeScript

Built for production

Everything you need to manage Ceph RGW at scale, nothing you don't.

No Dependency Hell

SigV4 signing uses only the built-in node:crypto module. The single runtime dep is undici — Node.js's own HTTP client, maintained by the Node.js core team, with zero transitive deps. Install radosgw-admin, get one extra package.

Built-in node:crypto for signing
0 transitive dependencies
No aws-sdk, no axios, no node-fetch
import { RadosGWAdminClient } from 'radosgw-admin';

const rgw = new RadosGWAdminClient({
host: 'https://rgw.example.com',
accessKey: process.env.RGW_ACCESS_KEY,
secretKey: process.env.RGW_SECRET_KEY,
});

// Create a user in one call
const user = await rgw.users.create({
uid: 'alice',
displayName: 'Alice',
});

Typed Errors That Help

Catch specific error classes with real Ceph error codes. No more parsing error strings or guessing what HTTP 404 means.

6 specific error classes
Automatic retry on 429 & 5xx
Typed code field on every error
import { RGWNotFoundError, RGWRateLimitError }
from 'radosgw-admin';

try {
await rgw.users.get({ uid: 'alice' });
} catch (err) {
if (err instanceof RGWNotFoundError) {
console.log(err.code); // 'NoSuchUser'
console.log(err.status); // 404
}
if (err instanceof RGWRateLimitError) {
// Automatically retried with backoff
}
}

Observe Everything

Add logging, Prometheus metrics, or audit trails via request hooks. No monkey-patching, no middleware — just callbacks.

onBeforeRequest / onAfterResponse
Hook errors never break requests
Works across all 8 modules
const rgw = new RadosGWAdminClient({
host: 'https://rgw.example.com',
accessKey: '...',
secretKey: '...',
onBeforeRequest: (ctx) => {
console.log(`${ctx.method} ${ctx.path}`);
},
onAfterResponse: (ctx) => {
histogram.observe(ctx.duration);
},
});

Frequently asked questions

The Ceph RADOS Gateway (RGW) Admin Ops API is a REST interface built into Ceph that lets administrators manage users, access keys, buckets, quotas, and rate limits programmatically. It is separate from the S3-compatible data API — it is specifically for cluster administration.

Install radosgw-admin (npm install radosgw-admin), create a RadosGWAdminClient with your RGW host and admin credentials, then call rgw.users.create(), rgw.users.get(), rgw.users.suspend(), and other methods. The SDK covers the full user lifecycle.

Yes. radosgw-admin works with any Ceph RGW instance including Rook-Ceph on Kubernetes. Point the host to your RGW service endpoint (e.g. http://rook-ceph-rgw-my-store.rook-ceph.svc) and provide admin credentials from the Kubernetes secret.

Yes. OpenShift Data Foundation uses Ceph RGW internally. radosgw-admin connects to the ODF RGW endpoint the same way as any other Ceph cluster.

Just one: undici — the HTTP client library maintained by the Node.js core team and used internally by Node.js itself for its built-in fetch. It has zero transitive dependencies. SigV4 signing still uses only the built-in node:crypto module.

Node.js 18 or later. The SDK uses native fetch and node:crypto which are stable from Node.js 18 onwards. It also works with Bun.

All of them — npm, yarn, pnpm, and bun. Install with: npm install radosgw-admin, yarn add radosgw-admin, pnpm add radosgw-admin, or bun add radosgw-admin.

Ready to get started?

Install in seconds. Ship your first RGW integration in minutes.