You need to enable JavaScript to run this app.
Torch Object Storage

Torch Object Storage

Copy page
Download PDF
Manage Bucket Configuration
Managing Mirror Origin Retrieval (Harmony SDK)
Copy page
Download PDF
Managing Mirror Origin Retrieval (Harmony SDK)
Mirror back-to-origin is mainly used in scenarios where seamless data migration to TOS is required. For example, if your web service is already running on a self-built origin server and you migrate static web pages to TOS for storage, you can configure mirror back-to-origin rules to retrieve the part of data that has not yet been migrated to TOS.​
Sample Code​
Configure Origin Fetch​
warning​
  • A bucket supports the creation of only one origin retrieval rule.​
  • Mirror back-to-origin supports objects up to a maximum size of 5 GiB.​
  • Redirect to origin supports a maximum of 300 GiB.​
​
import { TosClient, TosClientError, TosServerError } from '@volcengine/tos_harmonyos_sdk';​
​
​
const client = new TosClient({​
accessKeyId: "Provide your ak", ​
accessKeySecret: "Provide your sk", ​
securityToken: 'Provide your securityToken',​
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);​
} else {​
console.log('unexpected exception, message: ', error);​
}​
}​
​
const bucketName = 'harmonyos-sdk-test-bucket';​
async function main() {​
​
async function main() {​
try {​
const mirrorRule: MirrorBackRule = {​
​
ID: 'rule1',​
Condition: {​
​
HttpCode: 404,​
},​
Redirect: {​
​
RedirectType: RedirectType.RedirectTypeMirror,​
​
FetchSourceOnRedirect: true,​
​
PassQuery: true,​
​
FollowRedirect: true,​
MirrorHeader: {​
​
PassAll: false,​
​
Pass: ['header-1', 'header-2'],​
​
Remove: ['header-3', 'header-4'],​
},​
​
PublicSource: {​
SourceEndpoint: {​
Primary: ['https://www.example.com'],​
},​
},​
},​
};​
const res = await client.putBucketMirrorBack({​
Bucket: bucketName,​
Rules: [mirrorRule],​
});​
console.log('putBucketMirrorBack Request ID: ', res.RequestId);​
} catch (error) {​
handleError(error);​
}​
}​
​
main();​
​
Fetch Mirror from Origin​
warning​
You must be the owner of the bucket to access its mirror back-to-origin rules.​
​
import { TosClient, TosClientError, TosServerError } from '@volcengine/tos_harmonyos_sdk';​
​
​
const client = new TosClient({​
accessKeyId: "Provide your ak", ​
accessKeySecret: "Provide your sk", ​
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);​
} else {​
console.log('unexpected exception, message: ', error);​
}​
}​
const bucketName = 'harmonyos-sdk-test-bucket';​
async function main() {​
try {​
const res = await client.getBucketMirrorBack({​
Bucket: bucketName,​
});​
console.log('getBucketMirrorBack Request ID: ', res.RequestId);​
console.log('getBucketMirrorBack Rules Length: ', res.Rules.length);​
for (const rule of res.Rules) {​
​
console.log('rule ID:', rule.ID);​
​
console.log('rule Condition HttpCode:', rule.Condition.HttpCode);​
​
console.log('rule Redirect RedirectType:', rule.Redirect.RedirectType);​
​
console.log('rule Redirect FetchSourceOnRedirect:', rule.Redirect.FetchSourceOnRedirect);​
​
console.log('rule Redirect PassQuery:', rule.Redirect.PassQuery);​
​
console.log('rule Redirect FollowRedirect:', rule.Redirect.FollowRedirect);​
​
console.log('rule Redirect MirrorHeader PassAll:', rule.Redirect.MirrorHeader?.PassAll);​
​
console.log('rule Redirect MirrorHeader Pass:', rule.Redirect.MirrorHeader?.Pass);​
​
console.log('rule Redirect MirrorHeader Remove:', rule.Redirect.MirrorHeader?.Remove);​
​
console.log('rule Redirect PublicSource SourceEndpoint:', rule.Redirect.PublicSource?.SourceEndpoint);​
}​
} catch (error) {​
handleError(error);​
}​
}​
​
main();​
​
Delete Mirror Origin Retrieval​
warning​
You must be the owner of the bucket to delete its mirror source retrieval rule.​
​
import { TosClient, TosClientError, TosServerError } from '@volcengine/tos_harmonyos_sdk';​
​
​
const client = new TosClient({​
accessKeyId: "Provide your ak",​
accessKeySecret: "Provide your ak",​
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);​
} else {​
console.log('unexpected exception, message: ', error);​
}​
}​
​
async function main() {​
try {​
const res = await client.deleteBucketMirrorBack({​
Bucket: bucketName,​
});​
console.log('deleteBucketMirrorBack Request ID: ', res.RequestId);​
} catch (error) {​
handleError(error);​
}​
}​
​
main();​
​
Relevant Documentation​
For more information about origin fetch, see Setting Origin Rules.​
Last updated: 2025.09.26 19:05:14