Utilisation de PutBucketReplication avec un kit AWS SDK ou une interface de ligne de commande - Exemples de code de kit AWS SDK

D’autres exemples de kits AWS SDK sont disponibles dans le référentiel GitHub AWS Doc SDK Examples.

Utilisation de PutBucketReplication avec un kit AWS SDK ou une interface de ligne de commande

Les exemples de code suivants illustrent comment utiliser PutBucketReplication.

CLI
AWS CLI

Pour configurer la réplication d’un compartiment S3

L’exemple put-bucket-replication suivant applique une configuration de réplication au compartiment S3 spécifié.

aws s3api put-bucket-replication \ --bucket amzn-s3-demo-bucket1 \ --replication-configuration file://replication.json

Contenu de replication.json :

{ "Role": "arn:aws:iam::123456789012:role/s3-replication-role", "Rules": [ { "Status": "Enabled", "Priority": 1, "DeleteMarkerReplication": { "Status": "Disabled" }, "Filter" : { "Prefix": ""}, "Destination": { "Bucket": "arn:aws:s3:::amzn-s3-demo-bucket2" } } ] }

La gestion des versions doit être activée dans le compartiment de destination. Le rôle spécifié doit être autorisé à écrire dans le compartiment de destination et avoir une relation de confiance qui permet à Amazon S3 d’endosser le rôle.

Exemple de politique d’autorisation de rôle :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Effect": "Allow", "Action": [ "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] }, { "Effect": "Allow", "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket2/*" } ] }

Exemple de politique de relation de confiance :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Cette commande ne produit aucun résultat.

Pour plus d’informations, consultez cette rubrique dans le Guide de l’utilisateur de la console Amazon Simple Storage Service.

  • Pour plus de détails sur l’API, consultez PutBucketReplication dans la Référence des commandes de l’AWS CLI.

Java
SDK pour Java 2.x
Note

Il y en a plus sur GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS.

/** * Sets the replication configuration for an Amazon S3 bucket. * * @param s3Client the S3Client instance to use for the operation * @param sourceBucketName the name of the source bucket * @param destBucketName the name of the destination bucket * @param destinationBucketARN the Amazon Resource Name (ARN) of the destination bucket * @param roleARN the ARN of the IAM role to use for the replication configuration */ public static void setReplication(S3Client s3Client, String sourceBucketName, String destBucketName, String destinationBucketARN, String roleARN) { try { Destination destination = Destination.builder() .bucket(destinationBucketARN) .storageClass(StorageClass.STANDARD) .build(); // Define a prefix filter for replication. ReplicationRuleFilter ruleFilter = ReplicationRuleFilter.builder() .prefix("documents/") .build(); // Define delete marker replication setting. DeleteMarkerReplication deleteMarkerReplication = DeleteMarkerReplication.builder() .status(DeleteMarkerReplicationStatus.DISABLED) .build(); // Create the replication rule. ReplicationRule replicationRule = ReplicationRule.builder() .priority(1) .filter(ruleFilter) .status(ReplicationRuleStatus.ENABLED) .deleteMarkerReplication(deleteMarkerReplication) .destination(destination) .build(); List<ReplicationRule> replicationRuleList = new ArrayList<>(); replicationRuleList.add(replicationRule); // Define the replication configuration with IAM role. ReplicationConfiguration configuration = ReplicationConfiguration.builder() .role(roleARN) .rules(replicationRuleList) .build(); // Apply the replication configuration to the source bucket. PutBucketReplicationRequest replicationRequest = PutBucketReplicationRequest.builder() .bucket(sourceBucketName) .replicationConfiguration(configuration) .build(); s3Client.putBucketReplication(replicationRequest); System.out.println("Replication configuration set successfully."); } catch (IllegalArgumentException e) { System.err.println("Configuration error: " + e.getMessage()); } catch (S3Exception e) { System.err.println("S3 Exception: " + e.awsErrorDetails().errorMessage()); System.err.println("Status Code: " + e.statusCode()); System.err.println("Error Code: " + e.awsErrorDetails().errorCode()); } catch (SdkException e) { System.err.println("SDK Exception: " + e.getMessage()); } }
  • Pour plus de détails sur l’API, consultez PutBucketReplication dans la Référence des API du kit AWS SDK for Java 2.x.

PowerShell
Outils pour PowerShell V4

Exemple 1 : cet exemple définit une configuration de réplication avec une règle unique permettant de répliquer dans le compartiment « amzn-s3-demo-bucket » tous les nouveaux objets créés avec le préfixe de nom clé « TaxDocs » dans le compartiment « amzn-s3-demo-bucket ».

$rule1 = New-Object Amazon.S3.Model.ReplicationRule $rule1.ID = "Rule-1" $rule1.Status = "Enabled" $rule1.Prefix = "TaxDocs" $rule1.Destination = @{ BucketArn = "arn:aws:s3:::amzn-s3-demo-destination-bucket" } $params = @{ BucketName = "amzn-s3-demo-bucket" Configuration_Role = "arn:aws:iam::35667example:role/CrossRegionReplicationRoleForS3" Configuration_Rule = $rule1 } Write-S3BucketReplication @params

Exemple 2 : cet exemple définit une configuration de réplication avec plusieurs règles permettant de répliquer dans le compartiment « amzn-s3-demo-bucket » tous les nouveaux objets créés avec le préfixe de nom de clé « TaxDocs » ou « OtherDocs ». Les préfixes de clés ne doivent pas se chevaucher.

$rule1 = New-Object Amazon.S3.Model.ReplicationRule $rule1.ID = "Rule-1" $rule1.Status = "Enabled" $rule1.Prefix = "TaxDocs" $rule1.Destination = @{ BucketArn = "arn:aws:s3:::amzn-s3-demo-destination-bucket" } $rule2 = New-Object Amazon.S3.Model.ReplicationRule $rule2.ID = "Rule-2" $rule2.Status = "Enabled" $rule2.Prefix = "OtherDocs" $rule2.Destination = @{ BucketArn = "arn:aws:s3:::amzn-s3-demo-destination-bucket" } $params = @{ BucketName = "amzn-s3-demo-bucket" Configuration_Role = "arn:aws:iam::35667example:role/CrossRegionReplicationRoleForS3" Configuration_Rule = $rule1,$rule2 } Write-S3BucketReplication @params

Exemple 3 : cet exemple met à jour la configuration de réplication sur le compartiment spécifié afin de désactiver la règle contrôlant la réplication des objets portant le préfixe de nom clé « TaxDocs » vers le compartiment « amzn-s3-demo-bucket ».

$rule1 = New-Object Amazon.S3.Model.ReplicationRule $rule1.ID = "Rule-1" $rule1.Status = "Disabled" $rule1.Prefix = "TaxDocs" $rule1.Destination = @{ BucketArn = "arn:aws:s3:::amzn-s3-demo-destination-bucket" } $params = @{ BucketName = "amzn-s3-demo-bucket" Configuration_Role = "arn:aws:iam::35667example:role/CrossRegionReplicationRoleForS3" Configuration_Rule = $rule1 } Write-S3BucketReplication @params
  • Pour plus de détails sur l’API, consultez PutBucketReplication dans la Référence des applets de commande pour les Outils AWS pour PowerShell (V4).

Outils pour PowerShell V5

Exemple 1 : cet exemple définit une configuration de réplication avec une règle unique permettant de répliquer dans le compartiment « amzn-s3-demo-bucket » tous les nouveaux objets créés avec le préfixe de nom clé « TaxDocs » dans le compartiment « amzn-s3-demo-bucket ».

$rule1 = New-Object Amazon.S3.Model.ReplicationRule $rule1.ID = "Rule-1" $rule1.Status = "Enabled" $rule1.Prefix = "TaxDocs" $rule1.Destination = @{ BucketArn = "arn:aws:s3:::amzn-s3-demo-destination-bucket" } $params = @{ BucketName = "amzn-s3-demo-bucket" Configuration_Role = "arn:aws:iam::35667example:role/CrossRegionReplicationRoleForS3" Configuration_Rule = $rule1 } Write-S3BucketReplication @params

Exemple 2 : cet exemple définit une configuration de réplication avec plusieurs règles permettant de répliquer dans le compartiment « amzn-s3-demo-bucket » tous les nouveaux objets créés avec le préfixe de nom de clé « TaxDocs » ou « OtherDocs ». Les préfixes de clés ne doivent pas se chevaucher.

$rule1 = New-Object Amazon.S3.Model.ReplicationRule $rule1.ID = "Rule-1" $rule1.Status = "Enabled" $rule1.Prefix = "TaxDocs" $rule1.Destination = @{ BucketArn = "arn:aws:s3:::amzn-s3-demo-destination-bucket" } $rule2 = New-Object Amazon.S3.Model.ReplicationRule $rule2.ID = "Rule-2" $rule2.Status = "Enabled" $rule2.Prefix = "OtherDocs" $rule2.Destination = @{ BucketArn = "arn:aws:s3:::amzn-s3-demo-destination-bucket" } $params = @{ BucketName = "amzn-s3-demo-bucket" Configuration_Role = "arn:aws:iam::35667example:role/CrossRegionReplicationRoleForS3" Configuration_Rule = $rule1,$rule2 } Write-S3BucketReplication @params

Exemple 3 : cet exemple met à jour la configuration de réplication sur le compartiment spécifié afin de désactiver la règle contrôlant la réplication des objets portant le préfixe de nom clé « TaxDocs » vers le compartiment « amzn-s3-demo-bucket ».

$rule1 = New-Object Amazon.S3.Model.ReplicationRule $rule1.ID = "Rule-1" $rule1.Status = "Disabled" $rule1.Prefix = "TaxDocs" $rule1.Destination = @{ BucketArn = "arn:aws:s3:::amzn-s3-demo-destination-bucket" } $params = @{ BucketName = "amzn-s3-demo-bucket" Configuration_Role = "arn:aws:iam::35667example:role/CrossRegionReplicationRoleForS3" Configuration_Rule = $rule1 } Write-S3BucketReplication @params
  • Pour plus de détails sur l’API, consultez PutBucketReplication dans la Référence des applets de commande pour les Outils AWS pour PowerShell (V5).