Hay más ejemplos de AWS SDK disponibles en el repositorio de GitHub de ejemplos de AWS SDK de documentos
Uso de PutBucketReplication con un SDK de AWS o la CLI
Los siguientes ejemplos de código muestran cómo utilizar PutBucketReplication.
- CLI
-
- AWS CLI
-
Configurar la replicación de un bucket de S3
El siguiente ejemplo de
put-bucket-replicationaplica una configuración de replicación al bucket de S3 especificado.aws s3api put-bucket-replication \ --bucketamzn-s3-demo-bucket1\ --replication-configurationfile://replication.jsonContenido 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" } } ] }El bucket de destino debe tener habilitado el control de versiones. El rol especificado debe tener permiso para escribir en el bucket de destino y tener una relación de confianza que permita a Amazon S3 asumir el rol.
Ejemplo de política de permisos de roles:
{ "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/*" } ] }Ejemplo de política de relación de confianza:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Este comando no genera ninguna salida.
Para obtener más información, consulte Este es el título del tema en la guía del usuario de la consola de Amazon Simple Storage Service:
-
Para obtener información sobre la API, consulte PutBucketReplication
en la Referencia de comandos de la AWS CLI.
-
- Java
-
- SDK para Java 2.x
-
nota
Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de 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()); } }-
Para obtener información sobre la API, consulte PutBucketReplication en la Referencia de la API de AWS SDK for Java 2.x.
-
- PowerShell
-
- Herramientas para PowerShell V4
-
Ejemplo 1: Este ejemplo establece una configuración de replicación con una sola regla que permite replicar en el bucket “amzn-s3-demo-bucket” cualquier objeto nuevo creado con el prefijo de nombre de clave “TaxDocs” en el bucket “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 @paramsEjemplo 2: Este ejemplo establece una configuración de replicación con varias reglas que permiten replicar en el bucket “amzn-s3-demo-bucket' bucket” cualquier objeto nuevo creado con el prefijo de nombre de clave “TaxDocs” u “OtherDocs”. Los prefijos de claves no deben superponerse.
$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 @paramsEjemplo 3: Este ejemplo actualiza la configuración de replicación en el bucket especificado para inhabilitar la regla que controla la replicación de objetos con el prefijo de nombre de clave “TaxDocs” en el bucket “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-
Para obtener información sobre la API, consulte PutBucketReplication en la Referencia de cmdlets de Herramientas de AWS para PowerShell (V4).
-
- Herramientas para PowerShell V5
-
Ejemplo 1: Este ejemplo establece una configuración de replicación con una sola regla que permite replicar en el bucket “amzn-s3-demo-bucket” cualquier objeto nuevo creado con el prefijo de nombre de clave “TaxDocs” en el bucket “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 @paramsEjemplo 2: Este ejemplo establece una configuración de replicación con varias reglas que permiten replicar en el bucket “amzn-s3-demo-bucket' bucket” cualquier objeto nuevo creado con el prefijo de nombre de clave “TaxDocs” u “OtherDocs”. Los prefijos de claves no deben superponerse.
$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 @paramsEjemplo 3: Este ejemplo actualiza la configuración de replicación en el bucket especificado para inhabilitar la regla que controla la replicación de objetos con el prefijo de nombre de clave “TaxDocs” en el bucket “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-
Para obtener información sobre la API, consulte PutBucketReplication en la Referencia de cmdlets de Herramientas de AWS para PowerShell (V5).
-