同じアカウント内のSRRは、OSS SDK for Java、OSS SDK for Python、およびOSS SDK for Goを使用してのみサポートされます。
Java
com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo del.AddBucketReplicationRequestをインポートします。public classデモ {
public static void main(String[] args) throws Exception {
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// プロジェクトコードにアクセス資格情報を保存しないことをお勧めします。 そうしないと、アクセス資格情報が漏洩する可能性があります。 その結果、アカウント内のすべてのリソースのセキュリティが侵害されます。 この例では、アクセス資格情報は環境変数から取得されます。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// ソースバケットの名前を指定します。
String bucketName = "src-bucket";
// 宛先バケットの名前を指定します。 送信元バケットと送信先バケットは、同じAlibaba Cloudアカウントに属している必要があります。
String targetBucketName = "dest-bucket";
// 宛先バケットが配置されているリージョンを指定します。 ソースバケットと宛先バケットは同じリージョンにある必要があります。
文字列targetBucketLocation = "oss-cn-hangzhou";
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
AddBucketReplicationRequest request = new AddBucketReplicationRequest(bucketName);
request.setTargetBucketName(targetBucketName);
request.setTargetBucketLocation(targetBucketLocation);
// 履歴データを複製するかどうかを指定します。 デフォルトでは、履歴データはレプリケートされます。 この例では、このパラメーターはfalseに設定され、履歴データがレプリケートされないことを示します。
request.setEnableHistoricalObjectReplication(false);
// OSSがデータの複製に使用するRAMロールの名前を指定します。 RAMロールには、ソースバケットでSRRを実行し、宛先バケットでレプリケートされたオブジェクトを受け取る権限が必要です。
request.setSyncRole("yourRole");
// SSE-KMSを使用して暗号化されたオブジェクトを複製するかどうかを指定します。
// request.setSseKmsEncryptedObjectsStatus("Enabled");
// SSE-KMSで使用するCMK IDを指定します。 StatusがEnabledに設定されている場合、このパラメーターを指定する必要があります。
// request.setReplicaKmsKeyID("3542abdd-5821-4fb5-a425-90adca ***");
// リストプレフィックス=新しいArrayList();
// prefixes.add("image/");
// prefixes.add("ビデオ");
// prefixes.add("a");
// プレフィックス。add("A");
// 複製するオブジェクトの名前に含まれるプレフィックスを指定します。 プレフィックスを指定すると、名前にプレフィックスが含まれているオブジェクトのみが宛先バケットにレプリケートされます。
// request.setObjectPrefixList (プレフィックス);
// リストアクション=新しいArrayList();
// actions.add(AddBucketReplicationRequest.ReplicationAction.ALL);
// 宛先バケットにレプリケートする操作を指定します。 デフォルト値は ALL です。 これは、ソースバケット内のオブジェクトに対して実行されたすべての操作が宛先バケットにレプリケートされることを示します。
// request.setReplicationActionList (アクション);
ossClient.addBucketReplication(request);
} catch (Exception e) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "しかし、何らかの理由でエラー応答で拒否されました。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (ClientException e) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ 「ネットワークにアクセスできないなど」;
System.out.println("エラーメッセージ:" + ce.getMessage());
} 最後に{
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
Python
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsから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 ()
# 宛先バケットの名前を指定します。 送信元バケットと送信先バケットは、同じAlibaba Cloudアカウントに属している必要があります。
target_bucket_name='dest-bucket' 、
# 宛先バケットが配置されているリージョンを指定します。 ソースバケットと宛先バケットは同じリージョンにある必要があります。
target_bucket_location='oss-cn-hangzhou'
# OSSでデータの複製に使用するRAMロールの名前を指定します。 RAMロールには、ソースバケットでSRRを実行し、宛先バケットでレプリケートされたオブジェクトを受け取る権限が必要です。
sync_role_name='roleNameTest' 、)
# レプリケートするオブジェクトの名前に含まれるプレフィックスを指定します。 プレフィックスを指定すると、名前にプレフィックスが含まれているオブジェクトのみが宛先バケットにレプリケートされます。
# prefix_list = ['prefix1', 'prefix2']
# データ複製ルールを指定します。
# replica_config = ReplicationRule (
# prefix_list=prefix_list,
# 宛先バケットにレプリケートする操作を指定します。 デフォルト値は ALL です。 これは、ソースバケット内のオブジェクトに対して実行されたすべての操作が宛先バケットにレプリケートされることを示します。
# action_list=[ReplicationRule.ALL] 、
# 宛先バケットの名前を指定します。
# target_bucket_name='dest-bucket' 、
# 宛先バケットが配置されているリージョンを指定します。
# target_bucket_location='yourTargetBucketLocation' 、
# 履歴データを複製するかどうかを指定します。 デフォルトでは、履歴データはレプリケートされます。 この例では、このパラメーターはFalseに設定されています。これは、履歴データがレプリケートされないことを示します。
# is_enable_historical_object_replication=False、
# SSE-KMSを使用して暗号化されたオブジェクトを複製します。
# sse_kms_encrypted_objects_status=ReplicationRule.ENABLED
# SSE-KMSで使用するCMK IDを指定します。 SSE-KMSを使用して、宛先バケットにレプリケートされるオブジェクトを暗号化する場合は、このパラメーターを指定する必要があります。
# replica_kms_keyid='9468da86-3509-4f8d-a61e-6eab1eac **** '、
#)
# データ複製を有効にします。
bucket.put_bucket_replication(replica_config)
行く
パッケージメイン
import (import (import)
"encoding/xml"
"fmt"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
"os"
)
func HandleError (エラーエラー) {
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インスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// ソースバケットの名前を指定します。
srcbucketName := "yourSrcBucket"
// 宛先バケットの名前を指定します。
destBucketName := "yourDestBucket"
// レプリケートするオブジェクトの名前に含まれるprefix_1とprefix_2のプレフィックスを指定します。 プレフィックスを指定すると、名前にプレフィックスが含まれているオブジェクトのみが宛先バケットにレプリケートされます。
// すべてのオブジェクトをソースバケットから宛先バケットにレプリケートするには、プレフィックスを指定しないでください。
prefix1 := "prefix_1"
prefix2 := "prefix_2"
// SSE-KMSで使用するCMK IDを指定します。 StatusがEnabledに設定されている場合、このパラメーターを指定する必要があります。
keyId := "c4d49f85-ee30-426b-a5ed-95e9 ****"
// SSE-KMSを使用して暗号化されたオブジェクトを複製するかどうかを指定します。
source := "有効"
prefixSet := oss.ReplicationRulePrefix{Prefix: []* string{&prefix1, &prefix2}}
reqReplication := oss.PutBucketReplication {
ルール: []oss.ReplicationRule {
{
PrefixSet: &prefixSet、// 宛先バケットにレプリケートする操作を指定します。 デフォルト値は ALL です。 これは、ソースバケット内のオブジェクトに対して実行されたすべての操作が宛先バケットにレプリケートされることを示します。
アクション: "ALL" 、宛先: &oss.ReplicationRuleDestination {
バケット: destBucketName、// 宛先バケットが配置されているリージョンを指定します。 ソースバケットと宛先バケットは同じリージョンにある必要があります。
ロケーション: "oss-cn-hangzhou" 、},
// 履歴データを複製するかどうかを指定します。 デフォルトでは、履歴データはレプリケートされます。 この例では、このパラメーターはdisabledに設定されています。これは、履歴データがレプリケートされないことを示します。
HistoricalObjectReplication: "disabled" 、// OSSがデータの複製に使用するRAMロールの名前を指定します。 RAMロールには、ソースバケットでSRRを実行し、宛先バケットでレプリケートされたオブジェクトを受け取る権限が必要です。
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!)
}