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

跨賬號跨區域復制

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。

跨賬號跨區域復制是指將賬號A某個地域下源存儲空間(Bucket)的文件(Object)的創建、更新和刪除等操作自動、異步(近實時)地復制到賬號B另一個地域下的目標Bucket。本文介紹如何進行跨賬號跨區域復制。

前提條件

  • 已在賬號A下的某個地域創建Bucket A作為跨區域復制的源Bucket,并記錄賬號AUID、Bucket A的名稱及所在地域。

  • 已在賬號B下的另一個地域創建Bucket B作為跨區域復制的目標Bucket,并記錄賬號BUID、Bucket B的名稱及所在地域。

角色授權

跨賬號復制任務涉及兩個不同賬號的Bucket,您需要按照以下說明完成RAM角色所需的信任策略和最小權限策略。

  1. 通過賬號A完成以下操作。

    1. 創建普通服務角色。

      重要

      您可以選擇通過RAM用戶創建角色,RAM用戶必須擁有以下權限:ram:CreateRoleram:GetRoleram:ListPoliciesForRoleram:AttachPolicyToRole。但是考慮到授予RAM用戶ram:CreateRoleram:GetRole等角色相關的權限風險較大,您可以通過RAM用戶關聯的阿里云賬號創建RAM角色并為相應的RAM角色完成授權。授權完成后,RAM用戶可以直接復用阿里云賬號創建的RAM角色。

      創建角色過程中,需選擇可信實體類型為阿里云服務,角色類型選擇普通服務角色,受信服務選擇對象存儲。具體步驟,請參見創建普通服務角色

      說明

      角色創建成功后,請記錄基本信息區域的RAM角色ARN,以便后續添加權限時使用。

    2. 為角色授予源Bucket執行跨區域復制的權限。

      您可以選擇以下任意方式為角色授權。

      RAM角色授予系統策略

      警告

      您可以選擇為RAM角色授予系統策略AliyunOSSFullAccessAliyunOSSFullAccess默認擁有當前賬號下所有Bucket的所有操作權限,請謹慎使用。

      RAM角色授予自定義策略

      通過RAM Policy的方式對RAM角色授予源Bucket(src-bucket)復制所需的最小權限。

      說明

      實際使用時,請相應替換源Bucket名稱。

      {
         "Version":"1",
         "Statement":[
            {
               "Effect":"Allow",
               "Action":[
                  "oss:ReplicateList",
                  "oss:ReplicateGet"
               ],
               "Resource":[
                  "acs:oss:*:*:src-bucket",          	
                  "acs:oss:*:*:src-bucket/*"
               ]
            }
         ]
      }

      如果您希望將KMS加密的Object復制到目標Bucket,您還需要為角色授予AliyunKMSFullAccess系統策略。具體步驟,請參見RAM角色授權

  2. 通過賬號B授予角色在目標Bucket接收復制對象的權限。

    (推薦)方式一:按圖形策略添加

    1. 登錄OSS管理控制臺

    2. 在左側導航欄,單擊Bucket 列表,然后單擊目標bucket名稱dest-bucket

    3. 在左側導航欄,選擇權限控制 > Bucket 授權策略

    4. Bucket 授權策略頁面的按圖形策略添加頁簽,單擊接收復制對象

    5. 接收復制對象面板,UIDRAM角色獲取方式選中從源端復制RAM角色ARN獲取源端復制RAM角色ARN選擇步驟1創建的角色ARN。

    6. 單擊生成 Policy

    方式二:按語法策略添加

    1. 在左側導航欄,選擇權限控制>Bucket 授權策略

    2. Bucket 授權策略頁面的按語法策略添加頁簽,單擊編輯

    3. 在語法策略輸入框中,輸入以下Bucket Policy。

      重要
      • 通過Bucket Policy按語法策略的方式進行授權時,新添加的策略會覆蓋已有的策略,請確保新添加策略包含已有策略的內容,否則可能導致關聯已有策略的操作失敗。

      • 實際使用時,請相應替換自定義角色名稱(如果自定義角色名稱包含大寫字母,需轉換為對應的小寫字母。例如已創建的角色名稱為AliyunOssDrsRole,您需要轉換為aliyunossdrsrole)、目標Bucket名稱(dest-bucket)、源Bucket所屬賬號UID(137918634953xxxx)以及目標Bucket所屬賬號UID(111933544165xxxx)。

      {
         "Version":"1",
         "Statement":[
            {
              "Effect":"Allow",
              "Action":[
                  "oss:ReplicateList",
                  "oss:ReplicateGet",
                  "oss:ReplicatePut",
                  "oss:ReplicateDelete"			
               ],
              "Principal": [
                  "arn:sts::137918634953xxxx:assumed-role/aliyunossdrsrole/*"		 
      		 ],
               "Resource":[
                  "acs:oss:*:111933544165xxxx:dest-bucket",          	
                  "acs:oss:*:111933544165xxxx:dest-bucket/*"
               ]
            }
         ]
      }
    4. 單擊保存

復制KMS加密的Object

說明

支持復制KMS加密的Object到以下目標地域:華東1(杭州)、華東2(上海)、華南1(深圳)、華南2(河源)、華南3(廣州)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、西南1(成都)、華東2(上海金融云)、中國香港、新加坡、馬來西亞(吉隆坡)、印度尼西亞(雅加達)、菲律賓(馬尼拉)、泰國(曼谷)、日本(東京)、美國(硅谷)、美國(弗吉尼亞)、德國(法蘭克福)、英國(倫敦)。

如果您希望將賬號A下源BucketKMS加密的Object復制到賬號B下的目標Bucket,您需要使用目標Bucket所屬賬號B執行以下步驟。

  1. 登錄密鑰管理服務控制臺的實例管理頁面,在與目標Bucket相同的地域購買并啟用KMS實例。購買KMS實例時,確保訪問管理數量大于等于2,其他參數保留默認配置。具體步驟,請參見購買和啟用KMS實例

  2. KMS實例下創建密鑰。密鑰類型限制為非默認密鑰(建議軟件密鑰)。具體步驟,請參見創建軟件密鑰

    說明

    密鑰創建成功后,請記錄基本信息區域的密鑰ARN,以便后續創建復制規則時使用。

  3. 為創建的密鑰設置密鑰策略。設置密鑰策略時,選擇其他賬號使用者,并將其他賬號使用者指定為上述步驟創建的角色ARN。具體步驟,請參見設置密鑰策略

    重要

    跨賬號復制KMS加密數據要求密鑰策略至少包含解密(kms:Decrypt)和生成數據密鑰(kms:GenerateDataKey)的權限。通過控制臺設置密鑰策略時,默認包含這些權限。如果通過OpenAPI設置自定義密鑰策略,需要確保至少包含kms:Decryptkms:GenerateDataKey權限。

操作步驟

使用OSS控制臺

通過賬號A為源Bucket創建跨區域復制規則。

  1. 登錄OSS管理控制臺

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

  3. 在左側導航欄,選擇數據管理 > 跨區域復制

  4. 跨區域復制頁簽,單擊跨區域復制

  5. 跨區域復制對話框,按以下說明配置各項參數。

    區域

    參數

    說明

    設置目標Bucket

    Bucket

    顯示源Bucket所在地域及名稱。

    目標Bucket

    選中在另一個賬號中指定一個Bucket,然后下拉選擇目標Bucket所在地域,并手動輸入目標Bucket名稱。

    設置復制策略

    數據復制對象

    選擇需要復制的源數據。

    • 全部文件進行同步:將該Bucket內所有的Object復制到目標存儲空間。

    • 指定文件名前綴進行同步:將該Bucket內指定前綴的Object復制到目標Bucket。最多可以添加10個前綴。

    數據復制策略

    選擇數據復制的方式。

    說明

    創建數據復制規則后,源Bucket內通過生命周期規則或者CopyObject修改存儲類型后引起的存儲類型變更、以及該BucketObject的最后訪問時間(x-oss-last-access-time)屬性,均不會同步到目標Bucket。

    • 增/改 同步(適用于數據容災的場景):將源BucketObject新增和更新操作復制到目標Bucket。

      重要

      該策略下僅新增和更新的Object會被復制,而刪除操作不會影響目標Bucket。通過這種方式,可以有效防止因源Bucket手動刪除、通過生命周期自動刪除的行為導致目標Bucket數據丟失的問題。

    • 增/刪/改 同步(適用于共享和訪問同一數據集的場景:將源BucketObject的新增、更新、刪除操作復制到目標Bucket。

      重要

      該策略下新增、更新和刪除Object都會被復制到目標Bucket。通過這種方式,確保了數據的一致性,適用于需要共享和訪問同一數據集的多用戶或應用程序環境。但是配置該策略后,當手動刪除或者通過生命周期自動刪除源Bucket內的Object時,目標Bucket也會刪除對應的Object,且Object刪除后無法恢復。

    如果某個Object是通過分片上傳的方式上傳至源Bucket,則每個分片的上傳操作都會復制至目標Bucket。最終,對所有分片執行CompleteMultipartUpload后生成的Object,也會被復制到目標Bucket。

    有關跨區域復制結合版本控制的復制行為說明,請參見數據復制結合版本控制

    復制歷史數據

    選擇是否復制跨區域復制規則生效前源Bucket中已有的歷史數據。

    • 復制:將歷史數據復制至目標Bucket。

      重要

      復制歷史數據時,從源Bucket復制的Object可能會覆蓋目標Bucket中同名的Object。為避免這部分文件丟失,建議您對源Bucket和目標Bucket開啟版本控制。

    • 不復制:僅復制跨區域復制規則生效后上傳或更新的Object。

    KMS加密目標對象

    選擇是否將源BucketKMS加密的Object復制到目標Bucket。

    • 復制:在源Object或者目標Bucket使用了KMS托管密鑰加密方式(即SSE-KMS,指定CMK ID)的情況下,要將Object復制到目標Bucket。選擇復制選項后,您還需要指定KMS密鑰。

      說明

      您可以通過HeadObjectGetBucketEncryption分別查詢源Object和目標Bucket的加密狀態。

    • 不復制:不復制KMS加密的Object到目標Bucket。

    使用的KMS密鑰

    填寫KMS密鑰ARN。如何獲取KMS密鑰ARN,請參見KMS實例下創建軟件密鑰

    授權角色

    下拉選擇步驟1創建的角色。

    加速類型

    僅當跨區域復制涉及的兩個Bucket分別屬于中國內地與非中國內地地域時,加速類型支持傳輸加速

    開啟傳輸加速功能,OSS還會額外收取傳輸加速費用。計費方式,請參見傳輸加速費用

    數據復制時間控制(RTC)

    說明
    • 僅支持華東1(杭州)、華東2(上海)、華北1(青島)、華北2(北京)、華北 3(張家口)、華南1(深圳)各地域之間的跨區域復制任務開啟RTC。

    • 僅支持美國(硅谷)、美國(弗吉尼亞)地域之間的跨區域復制任務開啟RTC。

    開啟RTC后,OSS會在幾秒內復制您上傳到OSS的大多數Object,并在10分鐘內復制99.99%的Object。關于RTC的更多信息,請參見使用數據復制時間控制(RTC)。開啟RTC,將收取額外費用。更多信息,請參見跨區域復制RTC費用

  6. 單擊確定,然后在彈出的對話框,單擊確認開啟

    • 當跨區域復制規則創建完成后,不允許對此規則進行編輯或刪除。

    • 復制任務會在跨區域復制規則配置完成的3~5分鐘后啟動。您可以在源Bucket跨區域復制頁簽,查看復制進度。

    • 由于Bucket間的跨區域復制采用異步(近實時)復制,數據復制到目標Bucket需要的時間取決于數據的大小,通常幾分鐘到幾小時不等。

使用阿里云SDK

僅支持通過Java、Python以及Go SDK進行跨賬號跨區域復制。

Java

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.AddBucketReplicationRequest;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 強烈建議不要把訪問憑證保存到工程代碼里,否則可能導致訪問憑證泄露,威脅您賬號下所有資源的安全。本代碼示例以從環境變量中獲取訪問憑證為例。運行本代碼示例之前,請先配置環境變量。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填寫源Bucket名稱,例如src-bucket。
        String bucketName = "src-bucket";
        // 指定數據要復制到的目標Bucket。目標Bucket與源Bucket必須屬于不同賬號。
        String targetBucketName = "dest-bucket";
        // 指定目標Bucket所在地域。目標Bucket與源Bucket必須處于不同地域。
        String targetBucketLocation = "oss-cn-shanghai";

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

        try {
            AddBucketReplicationRequest request = new AddBucketReplicationRequest(bucketName);
            request.setTargetBucketName(targetBucketName);
            request.setTargetBucketLocation(targetBucketLocation);
            // 默認復制歷史數據。此處設置為false,表示禁止復制歷史數據。
            request.setEnableHistoricalObjectReplication(false);
            // 指定授權OSS進行數據復制的角色名稱,且該角色必須已被授予源Bucket執行跨區域復制以及目標Bucket接收復制對象的權限。
            request.setSyncRole("yourRole");           
            //List prefixes = new ArrayList();
            //prefixes.add("image/");
            //prefixes.add("video");
            //prefixes.add("a");
            //prefixes.add("A");
            // 指定待復制Object的前綴Prefix。指定Prefix后,只有匹配該Prefix的Object才會復制到目標Bucket。
            //request.setObjectPrefixList(prefixes);
            //List actions = new ArrayList();
            //actions.add(AddBucketReplicationRequest.ReplicationAction.PUT);
            // 將源Bucket內Object的新增、更新操作復制到目標Bucket。
            //request.setReplicationActionList(actions);
            ossClient.addBucketReplication(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();
            }
        }
    }
}        

Python

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import ReplicationRule
# 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# 填寫源Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
# 填寫源Bucket名稱,例如src-bucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'src-bucket')
replica_config = ReplicationRule(
    # 指定數據要復制到的目標Bucket。目標Bucket與源Bucket必須屬于不同賬號。
    target_bucket_name='dest-bucket',
    # 指定目標Bucket所在地域。目標Bucket與源Bucket必須處于不同地域。
    target_bucket_location='oss-cn-shanghai',
    # 指定授權OSS進行數據復制的角色名稱,且該角色必須已被授予源Bucket執行跨區域復制以及目標Bucket接收復制對象的權限。
    sync_role_name='roleNameTest',
)

# 指定待復制Object的前綴Prefix。指定Prefix后,只有匹配該Prefix的Object才會復制到目標Bucket。
# prefix_list = ['prefix1', 'prefix2']
# 設置數據復制規則。
# replica_config = ReplicationRule(
     # prefix_list=prefix_list,
     # 將源Bucket內Object的新增、更新操作復制到目標Bucket。
     # action_list=[ReplicationRule.P],
     # 指定數據要復制到的目標Bucket。目標Bucket與源Bucket必須屬于不同賬號。
     # target_bucket_name='dest-bucket',
     # 指定目標Bucket所在地域。目標Bucket與源Bucket必須處于不同地域。
     # target_bucket_location='yourTargetBucketLocation',
     # 默認復制歷史數據。此處設置為False,表示禁止復制歷史數據。
     # is_enable_historical_object_replication=False,
     # 指定數據復制時使用的數據傳輸鏈路。
     # target_transfer_type='oss_acc',    
  #)

# 開啟數據復制。
bucket.put_bucket_replication(replica_config)

Go

package main

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

func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}

// 開啟數據復制。
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名稱。
    srcbucketName := "yourSrcBucket"
    // 指定數據要復制到的目標Bucket。目標Bucket與源Bucket必須屬于不同賬號。
    destBucketName := "yourDestBucket"
    // 指定待復制Object的前綴prefix_1和prefix_2。指定Prefix后,只有匹配該Prefix的Object才會復制到目標Bucket。
    // 如果您需要將源Bucket中的所有Object復制到目標Bucket,則無需設置Prefix。
    prefix1 := "prefix_1"
    prefix2 := "prefix_2"    
    prefixSet := oss.ReplicationRulePrefix{Prefix: []*string{&prefix1, &prefix2}}
    // 在配置跨區域復制規則時,開啟數據復制時間控制(RTC)功能。
    enabled := "enabled"
    reqReplication := oss.PutBucketReplication{
    Rule: []oss.ReplicationRule{
    {
    PrefixSet: &prefixSet,
    //將源Bucket內Object的新增、更新操作復制到目標Bucket。
    Action: "PUT",
    RTC:    &enabled,
    Destination: &oss.ReplicationRuleDestination{
    Bucket: destBucketName,
    // 指定目標Bucket所在地域。源Bucket與目標Bucket必須處于不同的地域。    
    Location: "oss-cn-hangzhou",
    // 指定數據復制時使用的數據傳輸鏈路。此處設置為oss_acc,表示使用了傳輸加速鏈路。
    TransferType: "oss_acc",
    },
    // 默認復制歷史數據。此處設置為disabled,表示禁止復制歷史數據。
    HistoricalObjectReplication: "disabled",
    // 指定授權OSS進行數據復制的角色名稱,且該角色必須已被授予源Bucket執行跨區域復制以及目標Bucket接收復制對象的權限。
    SyncRole:                    "yourRole",    
    },
    },
    }

    xmlBody, err := xml.Marshal(reqReplication)
    if err != nil {
    HandleError(err)
    }
    err = client.PutBucketReplication(srcbucketName, string(xmlBody))

    if err != nil {
    HandleError(err)
    }

    fmt.Println("Put Bucket Replication Success!")
}

使用命令行工具ossutil

關于使用ossutil開啟跨賬號跨區域復制的具體步驟,請參見replication(數據復制)

使用REST API

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

相關文檔