Configuring Mirroring Back-to-Source Rules
Functions
This operation configures mirroring back-to-source rules for a specified bucket. The API is idempotent. If there is already an identical rule for the bucket, a success message is returned with status code 200. Otherwise, status code 201 is returned.
Request Syntax
PUT /?mirrorBackToSource HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Authorization: authorization Content-Type: application/json Content-Length: length Date: date policy json body
Request Parameters
This request contains no message parameters.
Request Headers
This request uses common headers. For details, see Table 3.
Request Elements
Element |
Description |
Mandatory |
---|---|---|
rules |
Number of rules. Type: container Value range: array size ranging from 1 to 10
NOTE:
For the same bucket, prefixes of different rules cannot contain each other or have duplicate beginning characters. The same agency is recommended. |
Yes |
Parameter |
Description |
Mandatory |
---|---|---|
id |
Rule ID. Unique ID of a back-to-source rule configured for the current bucket. Type: string Value range: 1 to 256. The value must be within the range of ^[a-zA-Z0-9_-]{1, 256}$. |
Yes |
condition |
Condition for triggering back-to-source. Type: container |
Yes |
httpErrorCodeReturnedEquals |
Error code that triggers the back-to-source function. When this error is returned for a download request, the back-to-source function is triggered. Type: integer Value range: 404 |
Yes |
objectKeyPrefixEquals |
Prefix of the object name that triggers the back-to-source function. Back-to-source is performed only when the specified object name prefix is contained in the request. If this parameter is left blank, all objects are matched by default. For the same bucket, prefixes of different rules cannot contain each other or have duplicate beginning characters. Type: string Valid value: a string of 0 to 1023 characters |
No |
redirect |
Main parameters of back-to-source. Type: container |
Yes |
agency |
Agency name With an agency, the customer can grant OBS the permissions to query whether a specified object exists in the bucket and upload objects to the bucket. Type: string |
Yes |
publicSource |
Configuration of the source site that can be publicly accessed. This parameter is mandatory when the source site is a public accessible resource. Type: container |
No |
sourceEndpoint |
Source site address that can be publicly accessed. Type: container |
No |
master |
Primary source address. If the source is a bucket that can be accessed over HTTP network, the address is the bucket domain name. If the source is a private bucket provided by other cloud vendors, the address is a region domain name address. Type: array Valid value: A single source site address is in the format of https|http://xxx.yyy.zzz, containing 10 to 255 characters.
NOTE:
The primary source site address is preferentially used during the back-to-source process. If multiple primary addresses are configured, all primary addresses are accessed in polling mode. If two or more primary addresses are configured, when the first request to the primary address fails and the retry conditions are met, the request will retry another primary address. At least one primary address must be configured. A maximum of five primary addresses can be configured. |
No |
slave |
Secondary source site address. If the source is a bucket that can be accessed over HTTP network, the address is the bucket domain name. If the source is a private bucket provided by other cloud vendors, the address is a region domain name address. Type: array Valid value: A single source site address is in the format of https|http://xxx.yyy.zzz, containing 10 to 255 characters.
NOTE:
A back-to-source request will retry the secondary source site address when primary source site address is not available. A maximum of five secondary addresses can be configured. |
No |
retryConditions |
Condition for switching the source site address. Type: array Value range: 4XX, 5XX, 400-499, and 500-599 error codes
NOTE:
Error codes starting with 4XX and 4 cannot be configured together. Error codes starting with 5XX and 5 cannot be configured together. A maximum of 20 error codes can be configured. |
No |
passQueryString |
Indicates whether to carry the request character string. If the value is true, the queryString value in the OBS request is passed to the source site. Otherwise, the queryString value will not be passed to the source site. The default value is false. Value false indicates that the parameter is ignored. Type: boolean Value range: false or true
NOTE:
If the value is true but the query contains signature information, delete the signature information and pass the remaining parameters. |
Yes |
mirrorFollowRedirect |
Indicates whether to obtain resources following the 3xx redirection request from the redirected source site. If the value is true, obtain resources following the 3xx redirection request from the redirected source site. Otherwise, OBS transparently passes the 3XX response and does not obtain resources. The default value is false. Value false indicates that the parameter is ignored. Type: boolean Value range: false or true |
Yes |
mirrorHttpHeader |
HTTP header pass rule Type: container |
No |
passAll |
Indicates whether to pass all HTTP headers through the source site. The following HTTP header types do not support passthrough: 1. Headers starting with the following prefixes: x-obs- x-amz- 2. All standard HTTP headers, for example: Content-Length Authorization Date passAll and pass are mutually exclusive. Value type: BOOL Value range: false or true |
No |
pass |
Specifies the list of HTTP headers to be passed through. Type: list Value range: a maximum of 10 lists. The length of each list ranges from 1 to 63 characters. The key can contain only letters (both upper and lower cases), digits, hyphens (-), and underscores (_). |
No |
remove |
List of HTTP headers that cannot be passed through. The remove operation takes precedence over the pass and passAll operations. Type: list Value range: a maximum of 10 lists. The length of each list ranges from 1 to 63 characters. The key can contain only letters (both upper and lower cases), digits, hyphens (-), and underscores (_). |
No |
set |
Configuration of list of HTTP headers to be passed through. The set operation has a higher priority than the remove, pass, and passAll operations. If the user-defined header contains Referer, redirectWithoutReferer must be set to true. Otherwise, Referer will be overwritten. Type: list Value range: a maximum of 10 lists |
No |
key |
Keyword of the HTTP header that needs to be passed through. Each key is unique. Type: string Value range: a string of 1 to 63 characters. Only letters (both upper and lower cases), digits, hyphens (-), and underscores (_) are allowed. |
No |
value |
Value of the HTTP header that needs to be passed through. Type: string Value range: a string of 0 to 2048 characters |
No |
replaceKeyWith |
Adds prefix or suffix. If you need to add a prefix or suffix when downloading objects from the source site, set this parameter to prefix${key}suffix. If no prefix or suffix needs to be added, set this parameter to ${key}. Type: string Value range: prefix${key}suffix ${key} is the keyword, prefix and suffix are the ones to be added. Total length of the prefix and suffix. The value ranges from 0 to 1023 characters. |
No |
replaceKeyPrefixWith |
Character string used to replace the prefix objectKeyPrefixEquals. If you need to replace the current object name prefix when downloading objects from the source site, modify this configuration item. If both replaceKeyWith and ReplaceKeyPrefixWith are empty, ReplaceKeyPrefixWith takes effect. The request is invalid if both the parameters are specified. Type: string Value range: a string of 0 to 1023 characters |
No |
vpcEndpointURN |
URN of VPC Endpoint service. Type: string Value range: a string of 0 to 127 characters |
No |
redirectWithoutReferer |
Indicates whether to carry the original host as the referer header to the destination address for redirection. Value false indicates that the original host will be carried, and true indicates that the original host will not be carried. Type: boolean Default value: false |
No |
mirrorAllowHttpMethod |
If HEAD is added for a public bucket, you can use HEAD requests to retrieve objects' metadata, rather than objects, from the origin server. Type: list |
No |
Response Syntax
HTTP/1.1 status Server: OBS Date: date Content-Length: length
Response Headers
The response to the request uses common headers. For details, see Table 1.
Response Elements
This response contains no elements.
Error Responses
No special error responses are returned. For details about error responses, see Table 2 and Table 3.
Sample Request
PUT /?mirrorBackToSource HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Authorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo= Content-Type: application/json Content-Length: 1049 Date: Tue, 21 Jul 2020 15:38:30 GMT { "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, "mirrorAllowHttpMethod":["HEAD"], "mirrorHttpHeader": { "passAll": false, "pass": ["content-encoding"], "remove": ["content-type"], "set": [{ "key": "helloworld", "value": "2222" }] }, "replaceKeyWith": "prefix${key}suffix", "replaceKeyPrefixWith": "picture/", "vpcEndpointURN": "001" } }] }
Sample Response
HTTP/1.1 201 Created Server: OBS Date: Tue, 07 Jul 2020 07:29:13 GMT Content-Length: 0
Feedback
Was this page helpful?
Provide feedbackThank 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