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