Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awsdocs
GitHub Repository: awsdocs/amazon-s3-developer-guide
Path: blob/master/code_examples/java_examples/S3Examples/CrossRegionReplication.java
4084 views
1
// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
// SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-developer-guide/blob/master/LICENSE-SAMPLECODE.)
3
4
import java.io.IOException;
5
import java.util.HashMap;
6
import java.util.Map;
7
8
import com.amazonaws.AmazonServiceException;
9
import com.amazonaws.SdkClientException;
10
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
11
import com.amazonaws.services.s3.AmazonS3;
12
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
13
import com.amazonaws.services.s3.model.BucketReplicationConfiguration;
14
import com.amazonaws.services.s3.model.ReplicationDestinationConfig;
15
import com.amazonaws.services.s3.model.ReplicationRule;
16
import com.amazonaws.services.s3.model.ReplicationRuleStatus;
17
import com.amazonaws.services.s3.model.StorageClass;
18
19
public class CrossRegionReplication {
20
21
public static void main(String[] args) throws IOException {
22
String clientRegion = "*** Client region ***";
23
String accountId = "*** Account ID ***";
24
String roleName = "*** Role name ***";
25
String sourceBucketName = "*** Source bucket name ***";
26
String destBucketName = "*** Destination bucket name ***";
27
String prefix = "Tax/";
28
29
String roleARN = String.format("arn:aws:iam::%s:role/%s", accountId, roleName);
30
String destinationBucketARN = "arn:aws:s3:::" + destBucketName;
31
32
try {
33
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
34
.withCredentials(new ProfileCredentialsProvider())
35
.withRegion(clientRegion)
36
.build();
37
38
// Create the replication rule.
39
Map<String, ReplicationRule> replicationRules = new HashMap<String, ReplicationRule>();
40
replicationRules.put("ReplicationRule1",
41
new ReplicationRule()
42
.withStatus(ReplicationRuleStatus.Enabled)
43
.withPrefix(prefix)
44
.withDestinationConfig(new ReplicationDestinationConfig()
45
.withBucketARN(destinationBucketARN)
46
.withStorageClass(StorageClass.Standard)));
47
48
// Save the replication rule to the source bucket.
49
s3Client.setBucketReplicationConfiguration(sourceBucketName,
50
new BucketReplicationConfiguration()
51
.withRoleARN(roleARN)
52
.withRules(replicationRules));
53
54
// Retrieve the replication configuration and verify that the configuration
55
// matches the rule we just set.
56
BucketReplicationConfiguration replicationConfig = s3Client.getBucketReplicationConfiguration(sourceBucketName);
57
ReplicationRule rule = replicationConfig.getRule("ReplicationRule1");
58
System.out.println("Retrieved destination bucket ARN: " + rule.getDestinationConfig().getBucketARN());
59
System.out.println("Retrieved source-bucket replication rule prefix: " + rule.getPrefix());
60
System.out.println("Retrieved source-bucket replication rule status: " + rule.getStatus());
61
}
62
catch(AmazonServiceException e) {
63
// The call was transmitted successfully, but Amazon S3 couldn't process
64
// it, so it returned an error response.
65
e.printStackTrace();
66
}
67
catch(SdkClientException e) {
68
// Amazon S3 couldn't be contacted for a response, or the client
69
// couldn't parse the response from Amazon S3.
70
e.printStackTrace();
71
}
72
}
73
}
74