日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

鏡像回源

在存量數據遷移完成后,您可以配置鏡像回源,以確保用戶可以訪問到尚未遷移至OSS的增量數據,以避免對業務的影響。配置鏡像回源后,當請求者訪問Bucket中不存在的文件(Object)時,OSS會根據回源規則指定的源站獲取該文件。OSS獲取到目標文件后,會將文件返回給請求者并保存到Bucket中。

使用限制

  • 支持地域

    華東1(杭州)、華東2(上海)、華北1(青島)、華北2(北京)、華北 3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、華南1(深圳)、華南2(河源)、華南3(廣州)、西南1(成都)、中國香港、美國(硅谷)、美國(弗吉尼亞)、日本(東京)、新加坡、澳大利亞(悉尼)關停中、馬來西亞(吉隆坡)、印度尼西亞(雅加達)、菲律賓(馬尼拉)、德國(法蘭克福)、英國(倫敦)、阿聯酋(迪拜)地域支持配置鏡像回源。

  • 規則數量

    回源規則最多配置20條,按RuleNumber的先后順序依次匹配。如果命中當前規則,則后續規則不再匹配。規則未命中表示沒有匹配回源條件,與回源后是否成功獲取目標文件無關。

  • QPS和流量限制

    單個阿里云賬號在中國內地各地域默認QPS為2000、流量為2 Gbit/s;非中國內地各地域默認QPS為1000、流量為1 Gbit/s。

    如果您的業務有更大的QPS或者流量需求,請聯系技術支持

  • 回源地址

    回源地址不支持內網地址。

  • 默認超時時間

    鏡像回源默認超時時間為10秒。

使用場景

鏡像回源主要用于數據無縫遷移到OSS的場景。例如某服務已經在自己建立的源站或者在其他云產品上運行。現因業務發展,需要將數據遷移到OSS上,但是又不能停止服務,此時可以在遷移數據的同時,使用鏡像回源功能保證業務的正常進行。關于使用案例的更多信息,請參見互聯網公司業務無縫遷移至阿里云OSS

說明

OSS鏡像回源不產生額外的費用,但是這個請求本身需照常收費。計費規則與非鏡像回源請求一樣收費。更多信息,請參見請求費用

回源流程

鏡像回源具體流程如下圖所示。

image

回源規則

  • 回源規則觸發條件

    只有當GetObject本應該返回404的情況下,OSS才會執行鏡像回源,向源站請求文件。

  • 回源文件命名規則

    OSS向源站請求的URL為http(s)://MirrorURL/ObjectName,回源到OSS的文件名為ObjectName。例如某Bucket設置的回源地址為https://aliyun.com,某用戶請求的文件example.jpg不在該Bucket中。則OSS會通過https://aliyun.com/example.jpg獲取文件,存儲到OSS的文件名為example.jpg

  • 回源請求失敗返回規則

    如果鏡像源也不存在此文件,即鏡像源返回給OSS的HTTP狀態碼為404,那么OSS也會返回404給用戶。如果是其他非200的狀態碼(包括因為網絡原因等獲取不到文件的錯誤情況),OSS將返回424 MirrorFailed給用戶。

  • 回源文件更新規則

    若某個文件已經通過鏡像回源到OSS,源站的源文件發生了變化,OSS不會更新該文件。

  • 回源文件元數據

    OSS會將源站返回的以下HTTP頭存儲為OSS文件的元數據:

    Content-Type
    Content-Encoding
    Content-Disposition
    Cache-Control
    Expires
    Content-Language
    Access-Control-Allow-Origin
  • HTTP請求規則

    • 傳給OSS的Header信息以及QueryString信息默認不會傳遞給源站,是否會傳遞給源站取決于回源規則中的配置。

    • 如果源站是chunked編碼返回,則OSS返回給用戶的也是chunked編碼。

操作步驟

使用OSS控制臺

通過控制臺配置多條回源規則時,默認按規則創建時間的先后順序依次匹配。如果您希望自定義規則匹配順序,請通過規則右側的上移下移操作來實現。

3

當請求者訪問目標Bucket中不存在的文件時,可以通過指定回源條件和回源地址,從源站中獲取目標文件。例如您在華東1(杭州)有名為examplebucket的Bucket,您希望請求者訪問Bucket根目錄下examplefolder目錄中不存在的文件時,可以從https://www.example.com/站點的examplefolder目錄獲取目標文件。配置步驟如下:

  1. 登錄OSS管理控制臺

  2. 單擊Bucket 列表,然后單擊目標Bucket名稱。

  3. 在左側導航欄,選擇數據管理 > 鏡像回源

  4. 鏡像回源頁面,單擊創建規則

  5. 創建規則面板,按以下說明配置必要參數,其他參數保留默認配置。

    參數

    配置

    回源類型

    選中鏡像

    回源條件

    選中文件名前綴,并設置為examplefolder/

    說明

    配置單條回源規則時文件名前綴和后綴可選填;配置多條回源規則時,必須設置不同的文件名前綴或后綴區分不同的回源規則。

    回源地址

    第一列設置為https,第二列設置為www.example.com,第三列設置為空。

  6. 單擊確定

    規則配置完成后的訪問流程如下:

    1. 請求者首次訪問https://examplebucket.oss-cn-hangzhou.aliyuncs.com/examplefolder/example.txt

    2. 如果examplebucket中不存在examplefolder/example.txt文件,則OSS向https://www.example.com/examplefolder/example.txt發起請求。

    3. 如果獲取到目標文件,OSS將example.txt存入examplebucket的examplefolder目錄,并將文件返回給請求者;如果未獲取到文件,則返回404錯誤給請求者。

以上配置步驟僅滿足鏡像回源的基礎應用場景,如果您需要配置其他鏡像回源規則以滿足特定的應用場景時,請參見鏡像回源配置示例

使用阿里云SDK

以下僅列舉常見SDK的配置鏡像回源規則的代碼示例。關于其他SDK的配置鏡像回源規則代碼示例,請參見SDK簡介

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.RoutingRule;
import com.aliyun.oss.model.SetBucketWebsiteRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填寫Bucket名稱,例如examplebucket。
        String bucketName = "examplebucket";

        // 創建OSSClient實例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            SetBucketWebsiteRequest request = new SetBucketWebsiteRequest(bucketName);
            // 設置默認主頁后,訪問以非正斜線(/)結尾的Object,且該Object不存在時的行為。
            //request.setSubDirType(null);
            // 指定訪問子目錄時,是否支持轉到子目錄下的默認主頁。
            //request.setSupportSubDir(false);

            List<RoutingRule> routingRules = new ArrayList<RoutingRule>();

            RoutingRule rule = new RoutingRule();
            rule.setNumber(1);
            // 只有匹配此前綴的Object才能匹配此規則。
            rule.getCondition().setKeyPrefixEquals("examplebucket");
            // 訪問指定Object時,返回status 404才能匹配此規則。
            rule.getCondition().setHttpErrorCodeReturnedEquals(404);
            // 指定跳轉的類型。
            rule.getRedirect().setRedirectType(RoutingRule.RedirectType.Mirror);
            // 指定鏡像回源的源站地址。例如https://www.example.com/。
            rule.getRedirect().setMirrorURL("<yourMirrorURL>");
            //rule.getRedirect().setMirrorRole("AliyunOSSMirrorDefaultRole");
            // 指定執行跳轉或者鏡像回源規則時,是否攜帶請求參數。
            rule.getRedirect().setPassQueryString(true);
            // 與PassQueryString作用相同,優先級高于PassQueryString。只有設置RedirectType為Mirror時生效。
            rule.getRedirect().setMirrorPassQueryString(true);
            // 指定跳轉時返回的狀態碼。只有設置RedirectType為External或者AliCDN時生效。
            //rule.getRedirect().setHttpRedirectCode(302);
            // 指定跳轉時的域名,域名需符合域名規范。
            //rule.getRedirect().setHostName("oss.aliyuncs.com");
            // 指定跳轉時的協議。只有設置RedirectType為External或者AliCDN時才生效。
            //rule.getRedirect().setProtocol(RoutingRule.Protocol.Https);
            // Redirect時Object名稱將替換成ReplaceKeyWith指定的值,ReplaceKeyWith支持設置變量。
            //rule.getRedirect().setReplaceKeyWith("${key}.jpg");
            // 如果設置此字段為true,則Object的前綴將被替換為ReplaceKeyPrefixWith指定的值。
            rule.getRedirect().setEnableReplacePrefix(true);
            // Redirect時Object名稱的前綴將替換成該值。
            rule.getRedirect().setReplaceKeyPrefixWith("examplebucket");
            // 是否檢查回源body的MD5。只有設置RedirectType為Mirror時生效。
            rule.getRedirect().setMirrorCheckMd5(true);

            RoutingRule.MirrorHeaders mirrorHeaders = new RoutingRule.MirrorHeaders();
            // 是否透傳除以下Header之外的其他Header到源站。只有設置RedirectType為Mirror時生效。
            mirrorHeaders.setPassAll(false);
            List passes = new ArrayList<String>();
            passes.add("cache-control");
            // 透傳指定的Header到源站。只有設置RedirectType為Mirror時生效。
            mirrorHeaders.setPass(passes);
            List removes = new ArrayList<String>();
            removes.add("content-type");
            // 禁止透傳指定的Header到源站。只有設置RedirectType為Mirror時生效。
            mirrorHeaders.setRemove(removes);
            List sets = new ArrayList<Map<String, String>>();
            Map header1 = new HashMap<String, String>();
            header1.put("Key", "key1");
            header1.put("Value", "value1");
            Map header2 = new HashMap<String, String>();
            header2.put("Key", "key2");
            header2.put("Value", "value2");
            sets.add(header1);
            sets.add(header2);
            // 設置傳到源站的Header。不管請求中是否攜帶這些指定的Header,回源時都會設置這些Header。
            mirrorHeaders.setSet(sets);
            // 指定回源時攜帶的Header。只有設置RedirectType為Mirror時才生效。
            rule.getRedirect().setMirrorHeaders(mirrorHeaders);

            routingRules.add(rule);
            request.setRoutingRules(routingRules);
            ossClient.setBucketWebsite(request);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
#-*-coding:utf-8-*-
import oss2
from oss2.models import BucketWebsite, MirrorHeadersSet, RedirectMirrorHeaders, Redirect, RoutingRule, \
    REDIRECT_TYPE_MIRROR, Condition
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# Endpoint以華東1(杭州)為例,其他Region請按實際情況填寫。
# 填寫Bucket名稱,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# 開啟靜態網站托管模式,并將默認首頁設置為index.html,默認404頁設置為error.html。
index_file = 'index.html'
error_file = 'error.html'
# 設置匹配的條件。
condition1 = Condition(key_prefix_equals='examplefolder',
                       http_err_code_return_equals=404)

# 指定鏡像回源時攜帶的Header。
mirror_headers_set_1 = MirrorHeadersSet("myheader-key5","myheader-value5")
mirror_headers_set_2 = MirrorHeadersSet("myheader-key6","myheader-value6")
set_list = [mirror_headers_set_1, mirror_headers_set_2]
pass_list = ['myheader-key1', 'myheader-key2']
remove_list = ['myheader-key3', 'myheader-key4']
mirror_header = RedirectMirrorHeaders(pass_all=True, pass_list=pass_list, remove_list=remove_list, set_list=set_list)
# 指定匹配此規則后執行的動作。
redirect1 = Redirect(redirect_type=REDIRECT_TYPE_MIRROR, mirror_url='https://www.example.com/',
                     mirror_pass_query_string=True, mirror_follow_redirect=True, mirror_check_md5=True, mirror_headers=mirror_header)

rule1 = RoutingRule(rule_num=1, condition=condition1, redirect=redirect1)
website_set = BucketWebsite(index_file, error_file, [rule1])

# 設置鏡像回源。
bucket.put_bucket_website(website_set)
package main

import (
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"os"
)

func main() {
	// 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 創建OSSClient實例。
	// yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
	client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 填寫Bucket名稱,例如examplebucket。
	bucketName := "examplebucket"

	var indexWebsite = "myindex.html"
	var errorWebsite = "myerror.html"

	btrue := true
	bfalse := false
	// 指定回源類型為鏡像。
	ruleOk := oss.RoutingRule{
		RuleNumber: 1,
		Condition: oss.Condition{
			KeyPrefixEquals: "",
			// 指定回源條件為HTTP狀態碼404。
			HTTPErrorCodeReturnedEquals: 404,
		},
		Redirect: oss.Redirect{
			RedirectType: "Mirror",
			// PassQueryString: &btrue,
			// 指定回源地址。
			MirrorURL: "http://www.test.com/",
			// MirrorPassQueryString:&btrue,
			// MirrorFollowRedirect:&bfalse,
			// MirrorCheckMd5:&bfalse,
			MirrorHeaders: oss.MirrorHeaders{
				// PassAll:&bfalse,
				// 允許傳遞指定HTTP Header參數。
				Pass: []string{"myheader-key1", "myheader-key2"},
				// 禁止傳遞指定HTTP Header參數。
				Remove: []string{"myheader-key3", "myheader-key4"},
				Set: []oss.MirrorHeaderSet{
					{
						Key:   "myheader-key5",
						Value: "myheader-value5",
					},
				},
			},
		},
	}

	// 指定回源類型為重定向。
	ruleArrOk := []oss.RoutingRule{
		{
			RuleNumber: 2,
			Condition: oss.Condition{
				// 指定回源條件為HTTP狀態碼404,文件名前綴為abc/。
				KeyPrefixEquals:             "abc/",
				HTTPErrorCodeReturnedEquals: 404,
				IncludeHeader: []oss.IncludeHeader{
					{
						Key:    "host",
						Equals: "test.oss-cn-beijing-internal.aliyuncs.com",
					},
				},
			},
			Redirect: oss.Redirect{
				RedirectType:     "AliCDN",
				Protocol:         "http",
				HostName:         "www.test.com",
				PassQueryString:  &bfalse,
				ReplaceKeyWith:   "prefix/${key}.suffix",
				HttpRedirectCode: 301,
			},
		},
		// 指定回源類型為鏡像。
		{
			RuleNumber: 3,
			Condition: oss.Condition{
				KeyPrefixEquals:             "",
				HTTPErrorCodeReturnedEquals: 404,
			},
			Redirect: oss.Redirect{
				RedirectType:          "Mirror",
				PassQueryString:       &btrue,
				MirrorURL:             "http://www.test.com/",
				MirrorPassQueryString: &btrue,
				MirrorFollowRedirect:  &bfalse,
				MirrorCheckMd5:        &bfalse,
				MirrorHeaders: oss.MirrorHeaders{
					PassAll: &btrue,
					Pass:    []string{"myheader-key1", "myheader-key2"},
					Remove:  []string{"myheader-key3", "myheader-key4"},
					Set: []oss.MirrorHeaderSet{
						{
							Key:   "myheader-key5",
							Value: "myheader-value5",
						},
					},
				},
			},
		},
	}

	wxmlOne := oss.WebsiteXML{
		IndexDocument: oss.IndexDocument{
			Suffix: indexWebsite,
		},
		ErrorDocument: oss.ErrorDocument{
			Key: errorWebsite,
		},
	}
	wxmlOne.RoutingRules = append(wxmlOne.RoutingRules, ruleOk)
	wxmlOne.RoutingRules = append(wxmlOne.RoutingRules, ruleArrOk...)
	err = client.SetBucketWebsiteDetail(bucketName, wxmlOne)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

     

使用命令行工具ossutil

關于使用ossutil配置鏡像回源規則的具體操作,請參見添加或修改Website配置

使用REST API

如果您的程序自定義要求較高,您可以直接發起REST API請求。直接發起REST API請求需要手動編寫代碼計算簽名。更多信息,請參見PutBucketWebsite

相關文檔

您可以通過日志查詢通過回源上傳的文件。具體操作,請參見實時日志查詢