Java
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.AddBucketReplicationRequest;
public class Demo {
public static void main(String[] args) throws Exception {
// 中国 (杭州) リージョンのエンドポイントを例として使用します。実際のエンドポイントに置き換えてください。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// エンドポイントに対応するリージョン ID を指定します。例: cn-hangzhou。
String region = "cn-hangzhou";
// プロジェクトコードにアクセス資格情報を保存しないでください。保存すると、アクセス資格情報が漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。この例では、環境変数からアクセス資格情報を取得する方法を示します。この例を実行する前に、環境変数を設定してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// ソースバケットの名前を指定します。
String bucketName = "src-bucket";
// データをレプリケートするターゲットバケットを指定します。ターゲットバケットとソースバケットは、同じアカウントに属している必要があります。
String targetBucketName = "dest-bucket";
// ターゲットバケットのリージョンを指定します。ターゲットバケットとソースバケットは、異なるリージョンにある必要があります。
String targetBucketLocation = "oss-cn-shanghai";
// OSSClient インスタンスを作成します。
// OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出してリソースを解放します。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// V4 署名アルゴリズムの使用を明示的に宣言します。
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);
// デフォルトでは、既存データがレプリケートされます。この例では、このパラメーターを false に設定して、既存データのレプリケーションを無効にします。
request.setEnableHistoricalObjectReplication(false);
// データのレプリケーションを承認されたロールの名前を指定します。このロールには、ソースバケットで CRR を実行し、ターゲットバケットでレプリケートされたオブジェクトを受信する権限が付与されている必要があります。
request.setSyncRole("yourRole");
// SSE-KMS を使用して暗号化されたオブジェクトをレプリケートするかどうかを指定します。
//request.setSseKmsEncryptedObjectsStatus("Enabled");
// SSE-KMS キー ID を指定します。Status を Enabled に設定した場合、この要素は必須です。
//request.setReplicaKmsKeyID("3542abdd-5821-4fb5-a425-90adca***");
//List prefixes = new ArrayList();
//prefixes.add("image/");
//prefixes.add("video");
//prefixes.add("a");
//prefixes.add("A");
// レプリケートするオブジェクトのプレフィックスを指定します。プレフィックスを指定すると、プレフィックスに一致するオブジェクトのみがターゲットバケットにレプリケートされます。
//request.setObjectPrefixList(prefixes);
//List actions = new ArrayList();
//actions.add(AddBucketReplicationRequest.ReplicationAction.PUT);
// ソースバケット内のオブジェクトの追加と更新をターゲットバケットにレプリケートします。
//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())
# ソースバケットが配置されているリージョンのエンドポイントを指定します。たとえば、ソースバケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
# ソースバケットの名前を指定します。例: src-bucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'src-bucket')
replica_config = ReplicationRule(
# データをレプリケートするターゲットバケットを指定します。ターゲットバケットとソースバケットは、同じアカウントに属している必要があります。
target_bucket_name='dest-bucket',
# ターゲットバケットのリージョンを指定します。ターゲットバケットとソースバケットは、異なるリージョンにある必要があります。
target_bucket_location='oss-cn-shanghai',
# データのレプリケーションを承認されたロールの名前を指定します。このロールには、ソースバケットで CRR を実行し、ターゲットバケットでレプリケートされたオブジェクトを受信する権限が付与されている必要があります。
sync_role_name='roleNameTest',
)
# レプリケートするオブジェクトのプレフィックスを指定します。プレフィックスを指定すると、プレフィックスに一致するオブジェクトのみがターゲットバケットにレプリケートされます。
# prefix_list = ['prefix1', 'prefix2']
# レプリケーションルールを設定します。
# replica_config = ReplicationRule(
# prefix_list=prefix_list,
# ソースバケット内のオブジェクトの追加と更新をターゲットバケットにレプリケートします。
# action_list=[ReplicationRule.PUT],
# データをレプリケートするターゲットバケットを指定します。ターゲットバケットとソースバケットは、同じアカウントに属している必要があります。
# target_bucket_name='dest-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 (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// グローバル変数を定義します。
var (
region string // バケットが配置されているリージョン。
bucketName string // バケットの名前。
)
// コマンドラインパラメーターを初期化するために使用される init 関数を指定します。
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
// コマンドラインパラメーターを解析します。
flag.Parse()
var (
targetBucket = "target bucket name" // ターゲットバケットの名前。
targetLocation = "oss-cn-beijing" // ターゲットバケットが配置されているリージョン。
)
// バケットの名前が指定されているかどうかを確認します。
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// リージョンが指定されているかどうかを確認します。
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// デフォルト設定をロードし、資格情報プロバイダーとリージョンを指定します。
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// OSS クライアントを作成します。
client := oss.NewClient(cfg)
// バケットのデータレプリケーションを有効にするリクエストを作成します。
request := &oss.PutBucketReplicationRequest{
Bucket: oss.Ptr(bucketName), // バケットの名前。
ReplicationConfiguration: &oss.ReplicationConfiguration{
Rules: []oss.ReplicationRule{
{
RTC: &oss.ReplicationTimeControl{
Status: oss.Ptr("enabled"), // RTC 機能を有効にします。
},
Destination: &oss.ReplicationDestination{
Bucket: oss.Ptr(targetBucket), // ターゲットバケットの名前。
Location: oss.Ptr(targetLocation), // ターゲットバケットが配置されているリージョン。
TransferType: oss.TransferTypeOssAcc, // 転送のタイプ。
},
HistoricalObjectReplication: oss.HistoricalObjectReplicationEnabled, // 既存データレプリケーション機能を有効にします。
},
},
},
}
// データレプリケーションを有効にします。
result, err := client.PutBucketReplication(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put bucket replication %v", err)
}
// 結果を表示します。
log.Printf("put bucket replication result:%#v\n", result)
}