Obtaining Mirroring-based Back-to-Source Rules
Function
This API is used to obtain mirroring-based, back-to-source rules of a bucket if such rules have been configured. If such rules exist, a success message is returned with status code 200. For more information about back to source by mirroring, see Using Mirroring-Based Back to Source to Retrieve Data.
Constraints
| Category | Description |
|---|---|
| Bucket versions | Only buckets of version 3.0 or later support back to source by mirroring. |
| Time | It takes about five minutes to apply any changes to a back-to-source by mirroring rule. |
| Number of rules | A maximum of 10 back-to-source by mirroring rules can be configured for a bucket. |
| Functions |
|
| Permissions |
|
| Others |
|
Authorization
To call this API, you must be the bucket owner or have the Tenant Administrator permission. To configure the Tenant Administrator permission, you need to use role/policy-based authorization (IAM v3 APIs in the old IAM version). For details, see Using IAM for Authorization.
URI
GET /
Calling Method
For details, see Calling APIs. Before calling this API, calculate the API signature and add it to the request.
You can debug this API in API Explorer.
Request Syntax
GET /?mirrorBackToSource HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Authorization: authorization Date: date
URI Parameters
This request contains no URI parameters.
Request Headers
This request uses common headers. For details, see Table 3.
Request Body
This request contains no request body parameters.
Response Syntax
HTTP/1.1 status_code
Server: OBS
Date: date
Content-Type: type
Content-Length: length
{
"rules": [{
"id": "abc123",
"condition": {
"httpErrorCodeReturnedEquals": "404",
"objectKeyPrefixEquals": "video/"
},
"redirect": {
"agency": "agency",
"publicSource": {
"sourceEndpoint": {
"master":["http://bucket1.xxx.yyy.com", "https://bucket2.xxx.yyy.com"],
"slave": ["http://bucket3.xxx.yyy.com", "https://bucket4.xxx.yyy.com"]
}
},
"retryConditions": ["4XX", "5XX"],
"passQueryString": true,
"mirrorFollowRedirect": true,
"redirectWithoutReferer": true,
"mirrorHttpHeader": {
"passAll": false,
"pass": ["content-encoding"],
"remove": ["content-type"],
"set": [{
"key": "helloworld",
"value": "2222"
}]
},
"replaceKeyPrefixWith": "picture/",
"vpcEndpointURN": "001"
}
}]
} Response Headers
This response uses common headers. For details, see Table 1.
Response Body
This response body contains the JSON configuration of the mirroring-based back-to-source rules.
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| rules | Yes | Container | Definition Array of rules. For the same bucket, prefixes of different rules cannot be the same or contain each other. The same agency is recommended. rules is the parent node of id, condition, and redirect. Range A maximum of 10 mirroring-based, back-to-source rules can be configured for a bucket. Therefore, the array can include 1 to 10 rules. For details, see Table 3. Default Value N/A |
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| id | Yes | String | Definition Unique ID of a mirroring-based, back-to-source rule configured for the current bucket. The rule ID must be unique in the bucket. Range The value can contain 1 to 256 characters. Only uppercase letters, lowercase letters, digits, underscores (_), and hyphens (-) are allowed. Default Value N/A |
| condition | Yes | Container | Definition Condition for triggering back-to-source. condition is the parent node of httpErrorCodeReturnedEquals and objectKeyPrefixEquals. Range For details, see Table 4. Default Value N/A |
| redirect | Yes | Container | Definition Parameters for implementing back-to-source. redirect is the parent node of agency, publicSource, retryConditions, passQueryString, mirrorFollowRedirect, replaceKeyWith, replaceKeyPrefixWith, vpcEndpointURN, redirectWithoutReferer, and mirrorAllowHttpMethod. Range For details, see Table 5. Default Value N/A |
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| httpErrorCodeReturnedEquals | Yes | String | Definition Status code that triggers back-to-source. When this error is returned for a download request, back-to-source is triggered. Range 404: The object does not exist in the OBS bucket. Default Value 404 |
| objectKeyPrefixEquals | No | String | Definition Object name prefix that triggers back-to-source. Back-to-source is performed only when the specified object name prefix is included in the request.
Range A string of 0 to 1,023 characters Default Value N/A |
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| agency | Yes | String | Definition Agency name. With an agency, you can grant OBS the permissions to query whether a specified object exists in the bucket and to upload objects to the bucket. Range N/A |
| publicSource | No | Container | Definition Publicly accessible source configuration. This parameter is mandatory when the source is a publicly accessible resource. publicSource is the parent node of sourceEndpoint. For details, see Table 6. |
| retryConditions | No | Array | Definition Condition for switching the source address. 4XX, 5XX, 400–499, and 500–599 (a maximum of 20 status codes can be configured at the same time). 4XX and a specific status code starting with 4 cannot be configured together. This rule works the same for 5XX and a status code starting with 5. |
| passQueryString | Yes | Boolean | Definition Whether to include the request character string. If the value is true but the query parameter contains the signature information, the signature information is removed and the remaining parameters are passed. Range
|
| mirrorFollowRedirect | Yes | Boolean | Definition Whether to obtain resources by redirecting the request based on the 3XX response from the source. Range
|
| mirrorHttpHeader | No | Container | Definition Rules for passing HTTP headers. mirrorHttpHeader is the parent node of passAll, pass, remove, and set. For details, see Table 8. |
| replaceKeyWith | No | String | Definition Rule for replacing the object name during back-to-source retrieval. You can use ${key}, prefix, and suffix. If both replaceKeyWith and replaceKeyPrefixWith are left blank, replaceKeyPrefixWith takes effect. The request is invalid if both parameters are specified. Range
${key} is the keyword, prefix is the added prefix, and suffix is the added suffix. The total length of prefix and suffix ranges from 0 to 1,023 characters. |
| replaceKeyPrefixWith | No | String | Definition Character string used to replace the prefix in objectKeyPrefixEquals. When objects are downloaded from the source, the system replaces the object name prefix with the prefix specified using this parameter. If both replaceKeyWith and replaceKeyPrefixWith are left blank, replaceKeyPrefixWith takes effect. The request is invalid if both parameters are specified. Range A string of 0 to 1,023 characters |
| vpcEndpointURN | No | String | Definition URN of VPC Endpoint service. Range A string of 0 to 127 characters |
| redirectWithoutReferer | No | Boolean | Definition Whether to include the original host as the Referer header in the redirect request. Range false: The original host is included as the Referer header in the redirect request. true: The original host is not included as the Referer header in the redirect request. |
| mirrorAllowHttpMethod | No | Array | Definition Request method that supports transparent passing. Value options:
|
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| sourceEndpoint | No | Container | Definition Publicly accessible source address. sourceEndpoint is the parent node of master and slave. For details, see Table 7. |
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| master | No | Array | Definition Primary source address. The format of a single source address is https://xxx.yyy.zzz or http://xxx.yyy.zzz. The value can contain 10 to 255 characters. If the source is a bucket accessible over HTTP, this address is the bucket domain name. If the source is a private bucket hosted by another cloud vendor, this address is the regional domain name. The primary source address is preferentially used during back-to-source. When one to five primary source addresses are configured, they are used in polling mode. If two or more primary addresses are configured, when the first request to a primary address fails and the retry conditions are met, another primary address will be used for a retry. |
| slave | No | Array | Definition Secondary source address. When back-to-source requests fail on the primary source address, the system automatically retries using the secondary source address. A maximum of five secondary addresses can be configured. The format of a single source address is https://xxx.yyy.zzz or http://xxx.yyy.zzz. The value can contain 10 to 255 characters. If the source is a bucket accessible over HTTP, this address is the bucket domain name. If the source is a private bucket hosted by another cloud vendor, this address is the regional domain name. |
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| passAll | No | Boolean | Definition Whether to pass all HTTP headers to the source. passAll and pass are mutually exclusive. The following HTTP headers cannot be passed:
Range
|
| pass | No | Array | Definition List of HTTP headers passed. Only letters, digits, hyphens (-), and underscores (_) are allowed. A maximum of 10 HTTP headers are displayed. The length of each header ranges from 1 to 63 characters. |
| remove | No | Array | Definition List of HTTP headers that are not passed. Only letters, digits, hyphens (-), and underscores (_) are allowed. A maximum of 10 HTTP headers are displayed. The length of each header ranges from 1 to 63 characters. The priority of remove is higher than that of pass and passAll. |
| set | No | Array | Definition Custom HTTP headers that are passed. A maximum of 10 HTTP headers are displayed. Each header contains a key and a value. For details about keys and values, see Table 9. The priority of set is higher than that of remove, pass, and passAll. If a custom Referer header is included, redirectWithoutReferer must be set to true. Otherwise, there will be an overwriting. |
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| key | No | String | Definition Key of a custom HTTP header that is passed. Only letters, digits, hyphens (-), and underscores (_) are allowed. Each key must be unique. Range A string of 1 to 63 characters |
| value | No | String | Definition Value of a custom HTTP header that is passed. Range A string of 1 to 2,048 characters |
Error Responses
No special errors. You can find all errors in Error Code Overview and Table 3.
Sample Request
GET /?mirrorBackToSource HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Authorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo= Date: Tue, 21 Jul 2020 22:28:46 GMT
Sample Response
HTTP/1.1 200 OK
Server: OBS
Date: Tue, 07 Jul 2020 07:28:46 GMT
Content-Type: application/json
Content-Length: 1063
{
"rules": [{
"id": "abc123",
"condition": {
"httpErrorCodeReturnedEquals": "404",
"objectKeyPrefixEquals": "video/"
},
"redirect": {
"agency": "agency",
"publicSource": {
"sourceEndpoint": {
"master":["http://bucket1.xxx.yyy.com", "https://bucket2.xxx.yyy.com"],
"slave": ["http://bucket3.xxx.yyy.com", "https://bucket4.xxx.yyy.com"]
}
},
"retryConditions": ["4XX", "5XX"],
"passQueryString": true,
"mirrorFollowRedirect": true,
"redirectWithoutReferer": true,
"mirrorHttpHeader": {
"passAll": false,
"pass": ["content-encoding"],
"remove": ["content-type"],
"set": [{
"key": "helloworld",
"value": "2222"
}]
},
"replaceKeyPrefixWith": "picture/",
"vpcEndpointURN": "001"
}
}]
} Helpful Links
- For more information about back to source by mirroring, see Using Back to Source by Mirroring to Retrieve Data.
- For details about the billing items involved in API operations, see Billing Items.
What is your overall rating for this page?
Thank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot