import { TosClient, TosClientError, TosServerError } from '@volcengine/tos-sdk';
const client = new TosClient({
accessKeyId: process.env['TOS_ACCESS_KEY'],
accessKeySecret: process.env['TOS_SECRET_KEY'],
region: "Provide your region",
endpoint: "Provide your endpoint",
function handleError(error) {
if (error instanceof TosClientError) {
console.log('Client Err Msg:', error.message);
console.log('Client Err Stack:', error.stack);
} else if (error instanceof TosServerError) {
console.log('Request ID:', error.requestId);
console.log('Response Status Code:', error.statusCode);
console.log('Response Header:', error.headers);
console.log('Response Err Code:', error.code);
console.log('Response Err Msg:', error.message);
console.log('unexpected exception, message: ', error);
const bucketName = 'node-sdk-test-bucket';
for (let isTruncated = true, keyMarker = '', versionIdMarker = ''; isTruncated; ) {
const { data } = await client.listObjectVersions({
for (const object of data.Versions) {
const { requestId } = await client.deleteObject({
versionId: object.VersionId,
console.log('deleteObject %s Request ID:', object.Key, requestId);
for (const markers of data.DeleteMarkers) {
const { requestId } = await client.deleteObject({
versionId: markers.VersionId,
console.log('deleteObject DeleteMarker %s Request ID:', markers.Key, requestId);
isTruncated = data.IsTruncated;
keyMarker = data.NextKeyMarker;
versionIdMarker = data.NextVersionIdMarker;
for (let isTruncated = true, keyMarker = '', uploadIdMarker = ''; isTruncated; ) {
const { data } = await client.listMultipartUploads({
for (const upload of data.Uploads) {
const { requestId } = await client.abortMultipartUpload({
uploadId: upload.UploadId,
console.log('abortMultipartUpload uploadId: %s, requestId: %s', upload.UploadId, requestId);
isTruncated = data.IsTruncated;
keyMarker = data.NextKeyMarker;
uploadIdMarker = data.NextUploadIdMarker;