Todos os produtos
Search
Central de documentação

Object Storage Service:Same-account same-region replication

Última atualização: Sep 22, 2026

A replicação entre buckets da mesma conta e mesma região replica de forma automática e assíncrona (em tempo quase real) operações como criação, atualização e exclusão de objetos em um bucket de origem em uma região de uma conta para um bucket de destino na mesma região da mesma conta. Este tópico descreve como configurar a replicação entre buckets da mesma conta e mesma região.

Pré-requisitos

  • Um bucket (Bucket A, o bucket de origem) foi criado em uma região de uma conta. Anote o UID da conta, o nome do Bucket A e a região.

  • Um bucket (Bucket B, o bucket de destino) foi criado na mesma conta e região. Anote o nome do Bucket B.

Tipos de função

Ao realizar a replicação entre buckets da mesma conta e mesma região, você deve especificar uma função que será usada para executar operações de replicação entre o bucket de origem e o bucket de destino. Você pode selecionar qualquer uma das funções a seguir para concluir a tarefa de replicação entre buckets da mesma conta e mesma região.

Importante

Você pode criar a função usando um usuário RAM. O usuário RAM deve ter as seguintes permissões: ram:CreateRole, ram:GetRole, ram:ListPoliciesForRole, e ram:AttachPolicyToRole. Como a concessão de permissões relacionadas a funções a um usuário RAM, como ram:CreateRole e ram:GetRole, apresenta riscos relativamente altos, recomendamos que você crie uma função RAM e conclua a autorização da função usando a conta Alibaba Cloud associada ao usuário RAM. Após a conclusão da autorização, o usuário RAM pode reutilizar diretamente a função RAM criada pela conta Alibaba Cloud.

(Recomendado) Criar uma função

Ao criar uma regra de replicação entre buckets da mesma conta e mesma região, você pode selecionar a opção de criar uma função para concluir a tarefa de replicação. Após selecionar a criação de uma função, o sistema cria automaticamente uma função no formato oss-replication-{uuid} e concede diferentes políticas de permissão com base em você selecionar ou não a replicação de objetos criptografados com KMS.

  • Replicar objetos criptografados com KMS

    Após criar a função, você deve concluir a autorização da função seguindo as instruções na tela. Após a conclusão da autorização, a função terá a política de permissão precisa para sincronizar dados do bucket de origem para o bucket de destino, além da política AliyunKMSCryptoUserAccess (permissões para gerenciar o Key Management Service (KMS)).

  • Não replicar objetos criptografados com KMS

    Após criar a função, você deve concluir a autorização da função seguindo as instruções na tela. Após a conclusão da autorização, a função terá a política de permissão precisa para sincronizar dados do bucket de origem para o bucket de destino.

AliyunOSSRole

Ao criar uma regra de replicação entre buckets da mesma conta e mesma região, você pode selecionar a função AliyunOSSRole para concluir a tarefa de replicação. Após selecionar essa função, o sistema concede diferentes políticas de permissão com base em você selecionar ou não a replicação de objetos criptografados com KMS.

  • Replicar objetos criptografados com KMS

    Após selecionar a função AliyunOSSRole, o sistema automaticamente concede as seguintes políticas de permissão à função AliyunOSSRole: AliyunOSSFullAccess (permissões para gerenciar OSS) e AliyunKMSCryptoUserAccess (permissões para gerenciar KMS). Não replicar objetos criptografados com KMS Após selecionar a função AliyunOSSRole, o sistema automaticamente concede AliyunOSSFullAccess (permissões para gerenciar OSS) à função AliyunOSSRole. #### Função personalizada Ao criar uma regra de replicação entre buckets da mesma conta e mesma região, você pode usar uma função personalizada para concluir a tarefa de replicação. Você deve criar uma função personalizada no console RAM e conceder as permissões necessárias à função. ## Procedimento

    Usar o console do OSS
    Usar os SDKs da Alibaba Cloud Apenas os SDKs Java, Python e Go oferecem suporte à replicação entre buckets da mesma conta e mesma região. #### Java #### Python #### Go
    Usar a ferramenta de linha de comando ossutil Para ver as etapas específicas para habilitar a replicação entre regiões iguais usando ossutil, consulte put-bucket-replication.
    Usar a API REST Se o seu programa tiver altos requisitos de personalização, você pode iniciar solicitações de API REST diretamente. Para iniciar solicitações de API REST diretamente, você deve escrever manualmente o código para calcular a assinatura. Para obter mais informações, consulte PutBucketReplication.

    Aviso

    Esta função tem permissões para executar todas as operações em todos os buckets e KMS sob a conta atual. O escopo de permissão é amplo. Tenha cuidado.

    Aviso

    Esta função tem permissões para executar todas as operações em todos os buckets sob a conta atual. O escopo de permissão é amplo. Tenha cuidado.

    1. Crie uma função de serviço normal.

      Ao criar a função, defina o tipo de entidade confiável como Alibaba Cloud Service e o serviço confiável como Object Storage Service. Para ver as etapas específicas, consulte Criar uma função de serviço normal.

    2. Conceda permissões à função.

      Você pode conceder permissões à função de qualquer uma das seguintes maneiras.

      Conceder uma política de sistema à função RAM

      Aviso

      Você pode conceder a política de sistema AliyunOSSFullAccess à função RAM. Por padrão, AliyunOSSFullAccess tem permissões para executar todas as operações em todos os buckets sob a conta atual. Tenha cuidado.

      Se você deseja replicar objetos criptografados com KMS para o bucket de destino, também deve conceder a AliyunKMSFullAccess política de sistema à função.

      Para ver as etapas específicas, consulte Gerenciar as permissões de uma função RAM.

      Conceder uma política personalizada à função RAM

      Recomendamos que você conceda à função RAM as permissões mínimas necessárias para a replicação entre o bucket de origem (src-bucket) e o bucket de destino (dest-bucket).

      Nota

      Na prática, substitua os nomes do bucket de origem e do bucket de destino conforme apropriado.

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

      Para ver as etapas específicas, consulte Gerenciar as permissões de uma função RAM.

      Nota

      Se você deseja replicar objetos criptografados com KMS para o bucket de destino, também deve conceder a AliyunKMSFullAccess política de sistema à função.

    Importante

    Ao replicar dados na mesma região sob a mesma conta, o OSS verifica apenas a política de permissão da função RAM usada para replicação. O sistema não verifica a política de bucket configurada para o bucket de origem ou de destino.

    1. Faça login no console do OSS.

    2. Clique em Buckets e, em seguida, clique em src-bucket.

    3. No painel de navegação à esquerda, escolha Data Management > SRR.

    4. Na aba SRR, clique em SRR.

    5. Na caixa de diálogo SRR, configure os parâmetros conforme descrito abaixo.

      Seção

      Parâmetro

      Descrição

      Configure Destination Bucket

      Source Bucket

      Exibe a região e o nome do bucket de origem.

      Destination Bucket

      Selecione Selecione um bucket que pertence à conta Alibaba Cloud e, em seguida, selecione o nome do bucket de destino na mesma região na lista suspensa.

      Objects to Replicate

      Selecione os dados de origem a serem replicados.

      • Synchronize all files: Replica todos os objetos do bucket para o bucket de destino.

      • Objects with Specified Prefix: Replica objetos com o prefixo especificado no bucket para o bucket de destino. Por padrão, é possível adicionar até 10 prefixos. Para aumentar o número de prefixos, entre em contato com o suporte técnico para solicitar um ajuste, até o máximo de 100.

      Object Tags

      Nota

      Para definir este parâmetro, as seguintes condições devem ser atendidas:

      • As tags de objeto são configuradas.

      • Copy delete marker e Copy delete operations for specified versions não estão selecionados.

      Após marcar a caixa de seleção Set rule, você pode replicar objetos com tags especificadas para o bucket de destino. É possível adicionar até 10 tags (pares chave-valor). Após adicionar tags, você pode selecionar uma das seguintes políticas de filtro de tags:

      • Contain all tags: Um objeto é replicado apenas se todas as suas tags estiverem no conjunto de tags especificado na regra de filtro.

      • Contain any tag: Um objeto é replicado se qualquer uma de suas tags estiver no conjunto de tags especificado na regra de filtro.

      Replicate KMS-Encrypted Source Objects

      Selecione se deseja replicar objetos criptografados com KMS para o bucket de destino.

      • Yes: Replica objetos para o bucket de destino quando o objeto de origem ou o bucket de destino usa uma chave gerenciada pelo KMS para criptografia (SSE-KMS com um ID de CMK especificado).

        Nota

        Você pode usar HeadObject e GetBucketEncryption para consultar o status de criptografia do objeto de origem e do bucket de destino, respectivamente.

      • No: Não replica objetos criptografados com KMS para o bucket de destino.

      CMK ID

      Se você selecionar replicar objetos criptografados com KMS para o bucket de destino, deve especificar a chave KMS usada para criptografar os objetos de destino.

      Antes de especificar uma chave KMS, você deve criar uma chave KMS na mesma região que o bucket de destino na plataforma KMS. Para ver as etapas específicas, consulte Criar uma chave.

      RAM Role

      Recomendamos que você selecione New RAM Role. Após selecionar a criação de uma função na lista suspensa, você deve concluir a autorização da função seguindo as instruções na tela.

      Você também pode selecionar AliyunOSSRole ou uma função personalizada. Para obter mais informações sobre esses três tipos de funções, consulte Tipos de função.

      Configure Replication Policy

      Replicate Historical Data

      Selecione se deseja replicar os dados históricos que existem no bucket de origem antes que a regra de replicação entre regiões iguais entre em vigor.

      • Yes: Replica dados históricos para o bucket de destino.

        Importante

        Quando dados históricos são replicados, objetos replicados do bucket de origem podem sobrescrever objetos com o mesmo nome no bucket de destino. Para evitar a perda desses arquivos, recomendamos que você habilite o controle de versão tanto no bucket de origem quanto no bucket de destino.

      • No: Replica apenas os objetos que são carregados ou atualizados após a regra de replicação entre regiões iguais entrar em vigor.

      Copy Delete Operation

      Selecione se deseja replicar as operações de exclusão do bucket de origem para o bucket de destino.

      Nota

      Esta opção é exibida no console quando o controle de versão não está habilitado para o bucket de origem. Se o controle de versão estiver habilitado para o bucket de origem, esta opção é substituída por duas configurações independentes: Copy Delete Marker e Copy Delete Operation of Specified Version.

      • Yes (aplicável a cenários onde o mesmo conjunto de dados é compartilhado e acessado): Replica as operações de criação, atualização e exclusão de objetos no bucket de origem para o bucket de destino.

        Importante

        Com esta política, a criação, atualização e exclusão de objetos são todas replicadas para o bucket de destino. Quando você exclui manualmente um objeto no bucket de origem ou quando um objeto é excluído automaticamente por uma regra de ciclo de vida, o objeto correspondente no bucket de destino também é excluído e não pode ser recuperado.

      • No (aplicável a cenários de recuperação de desastres): Replica apenas as operações de criação e atualização de objetos no bucket de origem para o bucket de destino. As operações de exclusão não afetam o bucket de destino.

        Nota

        Este método impede efetivamente a perda de dados no bucket de destino causada por exclusão manual ou exclusão automática por regras de ciclo de vida no bucket de origem.

      Copy Delete Marker

      Selecione se deseja replicar os marcadores de exclusão do bucket de origem para o bucket de destino.

      • Replicate: Quando um objeto é excluído do bucket de origem sem um ID de versão especificado, o marcador de exclusão criado pelo OSS no bucket de origem é sincronizado para o bucket de destino. Isso é aplicável a cenários onde o mesmo conjunto de dados é compartilhado e acessado, garantindo que os estados de dados dos buckets de origem e destino sejam consistentes.

        Importante

        Após configurar esta política, quando você exclui manualmente um objeto no bucket de origem ou quando um objeto é excluído automaticamente por uma regra de ciclo de vida, o marcador de exclusão também é sincronizado para o bucket de destino. Isso torna os dados inacessíveis no destino também.

      • Do not replicate (aplicável a cenários de recuperação de desastres): Os marcadores de exclusão criados no bucket de origem não são replicados para o bucket de destino. Isso previne efetivamente a perda de dados no bucket de destino causada por exclusão acidental ou exclusão automática por regras de ciclo de vida no bucket de origem.

      Copy Delete Operation of Specified Version

      Selecione se deseja replicar as operações de exclusão permanente para versões especificadas no bucket de origem para o bucket de destino.

      Nota

      Após criar uma regra de replicação de dados, as alterações de classe de armazenamento no bucket de origem causadas por regras de ciclo de vida ou pela modificação da classe de armazenamento por meio de CopyObject não são sincronizadas para o bucket de destino. O mesmo se aplica ao atributo de último tempo de acesso (x-oss-last-access-time) dos objetos no bucket.

      • Replicate: Quando uma versão especificada de um arquivo de origem (incluindo a versão atual e as versões históricas) é excluída permanentemente, a versão correspondente no bucket de destino também é excluída permanentemente. Isso é aplicável a cenários onde você precisa garantir que os dados de origem e destino sejam completamente consistentes.

        Importante

        Após configurar esta política, as versões de objetos excluídas permanentemente do bucket de origem não podem ser recuperadas no bucket de destino. Tenha cuidado.

      • Do not replicate (aplicável a cenários de recuperação de desastres): Quando uma versão especificada de um objeto de origem é excluída permanentemente, a versão correspondente no bucket de destino não é excluída. Isso impede que operações de exclusão permanente no bucket de origem afetem a segurança dos dados do bucket de destino.

      Se um objeto for carregado no bucket de origem usando upload multipart, a operação de upload de cada parte é replicada para o bucket de destino. Por fim, o objeto gerado após a execução de CompleteMultipartUpload em todas as partes também é replicado para o bucket de destino.

      Para obter informações sobre o comportamento de replicação entre regiões iguais combinado com controle de versão, consulte Replicação entre regiões iguais combinada com controle de versão.

    6. Clique em OK e, na caixa de diálogo que aparece, clique em Enable.

      • Após a criação da regra de replicação entre regiões iguais, a regra não pode ser editada ou excluída.

      • A tarefa de replicação inicia 3 a 5 minutos após a configuração da regra de replicação entre regiões iguais. Você pode visualizar o progresso da replicação na aba SRR do bucket de origem.

      • Como a replicação entre regiões iguais entre buckets usa replicação assíncrona (tempo quase real), o tempo necessário para replicar dados para o bucket de destino depende do tamanho dos dados e geralmente varia de alguns minutos a algumas horas.

    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;
    import com.aliyun.oss.ClientBuilderConfiguration;
    import com.aliyun.oss.common.comm.SignVersion;
    
    public class Demo {
    
        public static void main(String[] args) throws Exception {
            // In this example, the endpoint of the China (Hangzhou) region is used. Specify the endpoint based on your actual region.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Specify the region that corresponds to the endpoint, for example, cn-hangzhou.
            String region = "cn-hangzhou";
            // We strongly recommend that you do not save access credentials in project code. Otherwise, the access credentials may be leaked and the security of all resources under your account may be compromised. In this example, access credentials are obtained from environment variables. Before you run this sample code, configure the environment variables.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Specify the name of the source bucket.
            String bucketName = "src-bucket";
            // Specify the destination bucket to which data is replicated. The destination bucket and the source bucket must belong to the same account.
            String targetBucketName = "dest-bucket";
            // Specify the region of the destination bucket. The destination bucket and the source bucket must be in the same region.
            String targetBucketLocation = "oss-cn-hangzhou";
    
            // Create an OSSClient instance.
            // When the OSSClient instance is no longer used, call the shutdown method to release resources.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            // Explicitly declare the use of the V4 signature algorithm.
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
            OSS ossClient = OSSClientBuilder.create()
                    .endpoint(endpoint)
                    .credentialsProvider(credentialsProvider)
                    .clientConfiguration(clientBuilderConfiguration)
                    .region(region)
                    .build();
    
            try {
                AddBucketReplicationRequest request = new AddBucketReplicationRequest(bucketName);
    
                request.setTargetBucketName(targetBucketName);
                request.setTargetBucketLocation(targetBucketLocation);
                // Historical data is replicated by default. Set this to false to disable the replication of historical data.
                request.setEnableHistoricalObjectReplication(false);
                // Specify the name of the role that authorizes OSS to replicate data. The role must be granted the permissions to perform same-region replication on the source bucket and to receive replicated objects in the destination bucket.
                request.setSyncRole("yourRole");
                // Specify whether OSS replicates objects created by using SSE-KMS encryption.
                //request.setSseKmsEncryptedObjectsStatus("Enabled");
                // Specify the SSE-KMS key ID. This element is required if Status is set to Enabled.
                //request.setReplicaKmsKeyID("3542abdd-5821-4fb5-a425-90adca***");
                //List prefixes = new ArrayList();
                //prefixes.add("image/");
                //prefixes.add("video");
                //prefixes.add("a");
                //prefixes.add("A");
                // Specify the prefixes of the objects to replicate. After you specify prefixes, only objects that match the prefixes are replicated to the destination bucket.
                //request.setObjectPrefixList(prefixes);
                //List actions = new ArrayList();
                //actions.add(AddBucketReplicationRequest.ReplicationAction.PUT);
                // Replicate the creation and update operations of objects in the source bucket to the destination 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();
                }
            }
        }
    }        
    # -*- coding: utf-8 -*-
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    from oss2.models import ReplicationRule
    # Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # Specify the endpoint that corresponds to the region of the source bucket. For example, if the source bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
    # Specify the name of the source bucket, for example, src-bucket.
    bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'src-bucket')
    replica_config = ReplicationRule(
        # Specify the destination bucket to which data is replicated. The destination bucket and the source bucket must belong to the same account.
        target_bucket_name='dest-bucket',
        # Specify the region of the destination bucket. The destination bucket and the source bucket must be in the same region.
        target_bucket_location='oss-cn-hangzhou',
        # Specify the name of the role that authorizes OSS to replicate data. The role must be granted the permissions to perform same-region replication on the source bucket and to receive replicated objects in the destination bucket.
        sync_role_name='roleNameTest',
    )
    
    # Specify the prefixes of the objects to replicate. After you specify prefixes, only objects that match the prefixes are replicated to the destination bucket.
    # prefix_list = ['prefix1', 'prefix2']
    # Configure the data replication rule.
    # replica_config = ReplicationRule(
         # prefix_list=prefix_list,
         # Replicate the creation and update operations of objects in the source bucket to the destination bucket.
         # action_list=[ReplicationRule.PUT],
         # Specify the destination bucket to which data is replicated.
         # target_bucket_name='dest-bucket',
         # Specify the region of the destination bucket.
         # target_bucket_location='yourTargetBucketLocation',
         # Historical data is replicated by default. Set this to False to disable the replication of historical data.
         # is_enable_historical_object_replication=False,
         # Replicate objects created by using SSE-KMS encryption.
         # sse_kms_encrypted_objects_status=ReplicationRule.ENABLED
         # Specify the SSE-KMS key ID. This element is required if you specify to replicate objects created by using SSE-KMS encryption.
         # replica_kms_keyid='9468da86-3509-4f8d-a61e-6eab1eac****',
      #)
    
    # Enable data replication.
    bucket.put_bucket_replication(replica_config)
    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)
    }
    
    // Enable data replication.
    func main() {
    	// Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
    	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    	if err != nil {
    		fmt.Println("Error:", err)
    		os.Exit(-1)
    	}
    	// Create an OSSClient instance.
    	// Set yourEndpoint to the endpoint that corresponds to the bucket. For example, if the bucket is in the China (Hangzhou) region, set it to https://oss-cn-hangzhou.aliyuncs.com. Specify other regions based on your actual situation.
    	client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    	if err != nil {
    		fmt.Println("Error:", err)
    		os.Exit(-1)
    	}
    	// Specify the name of the source bucket.
    	srcbucketName := "yourSrcBucket"
    	// Specify the destination bucket to which data is replicated.
    	destBucketName := "yourDestBucket"
    	// Specify the prefixes prefix_1 and prefix_2 of the objects to replicate. After you specify prefixes, only objects that match the prefixes are replicated to the destination bucket.
    	// If you want to replicate all objects in the source bucket to the destination bucket, you do not need to specify prefixes.
    	prefix1 := "prefix_1"
    	prefix2 := "prefix_2"
    	// Specify the SSE-KMS key ID. This element is required if Status is set to Enabled.
    	keyId := "c4d49f85-ee30-426b-a5ed-95e9****"
    	// Specify whether OSS replicates objects created by using SSE-KMS encryption.
    	source := "Enabled"
    	prefixSet := oss.ReplicationRulePrefix{Prefix: []*string{&prefix1, &prefix2}}
    	reqReplication := oss.PutBucketReplication{
    		Rule: []oss.ReplicationRule{
    			{
    				PrefixSet: &prefixSet,
    				//Replicate the creation and update operations of objects in the source bucket to the destination bucket.
    				Action: "PUT",
    				Destination: &oss.ReplicationRuleDestination{
    					Bucket: destBucketName,
    					// Specify the region of the destination bucket. The source bucket and the destination bucket must be in different regions.
    					Location: "oss-cn-hangzhou",
    				},
    				// Historical data is replicated by default. Set this to disabled to disable the replication of historical data.
    				HistoricalObjectReplication: "disabled",
    				// Specify the name of the role that authorizes OSS to replicate data. The role must be granted the permissions to perform same-region replication on the source bucket and to receive replicated objects in the destination bucket.
    				SyncRole:                "yourRole",
    				EncryptionConfiguration: &keyId,
    				SourceSelectionCriteria: &source,
    			},
    		},
    	}
    
    	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!")
    }