S3 / Client / put_bucket_replication
put_bucket_replication#
- S3.Client.put_bucket_replication(**kwargs)#
Note
This operation is not supported for directory buckets.
Creates a replication configuration or replaces an existing one. For more information, see Replication in the Amazon S3 User Guide.
Specify the replication configuration in the request body. In the replication configuration, you provide the name of the destination bucket or buckets where you want Amazon S3 to replicate objects, the IAM role that Amazon S3 can assume to replicate objects on your behalf, and other relevant information. You can invoke this request for a specific Amazon Web Services Region by using the aws:RequestedRegion condition key.
A replication configuration must include at least one rule, and can contain a maximum of 1,000. Each rule identifies a subset of objects to replicate by filtering the objects in the source bucket. To choose additional subsets of objects to replicate, add a rule for each subset.
To specify a subset of the objects in the source bucket to apply a replication rule to, add the Filter element as a child of the Rule element. You can filter objects based on an object key prefix, one or more object tags, or both. When you add the Filter element in the configuration, you must also add the following elements:
DeleteMarkerReplication
,Status
, andPriority
.Note
If you are using an earlier version of the replication configuration, Amazon S3 handles replication of delete markers differently. For more information, see Backward Compatibility.
For information about enabling versioning on a bucket, see Using Versioning.
Handling Replication of Encrypted Objects
By default, Amazon S3 doesn’t replicate objects that are stored at rest using server-side encryption with KMS keys. To replicate Amazon Web Services KMS-encrypted objects, add the following:
SourceSelectionCriteria
,SseKmsEncryptedObjects
,Status
,EncryptionConfiguration
, andReplicaKmsKeyID
. For information about replication configuration, see Replicating Objects Created with SSE Using KMS keys.For information on
PutBucketReplication
errors, see List of replication-related error codesPermissions
To create a
PutBucketReplication
request, you must haves3:PutReplicationConfiguration
permissions for the bucket.By default, a resource owner, in this case the Amazon Web Services account that created the bucket, can perform this operation. The resource owner can also grant others permissions to perform the operation. For more information about permissions, see Specifying Permissions in a Policy and Managing Access Permissions to Your Amazon S3 Resources.
Note
To perform this operation, the user or role performing the action must have the iam:PassRole permission.
The following operations are related to
PutBucketReplication
:See also: AWS API Documentation
Request Syntax
response = client.put_bucket_replication( Bucket='string', ChecksumAlgorithm='CRC32'|'CRC32C'|'SHA1'|'SHA256', ReplicationConfiguration={ 'Role': 'string', 'Rules': [ { 'ID': 'string', 'Priority': 123, 'Prefix': 'string', 'Filter': { 'Prefix': 'string', 'Tag': { 'Key': 'string', 'Value': 'string' }, 'And': { 'Prefix': 'string', 'Tags': [ { 'Key': 'string', 'Value': 'string' }, ] } }, 'Status': 'Enabled'|'Disabled', 'SourceSelectionCriteria': { 'SseKmsEncryptedObjects': { 'Status': 'Enabled'|'Disabled' }, 'ReplicaModifications': { 'Status': 'Enabled'|'Disabled' } }, 'ExistingObjectReplication': { 'Status': 'Enabled'|'Disabled' }, 'Destination': { 'Bucket': 'string', 'Account': 'string', 'StorageClass': 'STANDARD'|'REDUCED_REDUNDANCY'|'STANDARD_IA'|'ONEZONE_IA'|'INTELLIGENT_TIERING'|'GLACIER'|'DEEP_ARCHIVE'|'OUTPOSTS'|'GLACIER_IR'|'SNOW'|'EXPRESS_ONEZONE', 'AccessControlTranslation': { 'Owner': 'Destination' }, 'EncryptionConfiguration': { 'ReplicaKmsKeyID': 'string' }, 'ReplicationTime': { 'Status': 'Enabled'|'Disabled', 'Time': { 'Minutes': 123 } }, 'Metrics': { 'Status': 'Enabled'|'Disabled', 'EventThreshold': { 'Minutes': 123 } } }, 'DeleteMarkerReplication': { 'Status': 'Enabled'|'Disabled' } }, ] }, Token='string', ExpectedBucketOwner='string' )
- Parameters:
Bucket (string) –
[REQUIRED]
The name of the bucket
ChecksumAlgorithm (string) –
Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don’t use the SDK. When you send this header, there must be a corresponding
x-amz-checksum
orx-amz-trailer
header sent. Otherwise, Amazon S3 fails the request with the HTTP status code400 Bad Request
. For more information, see Checking object integrity in the Amazon S3 User Guide.If you provide an individual checksum, Amazon S3 ignores any provided
ChecksumAlgorithm
parameter.ReplicationConfiguration (dict) –
[REQUIRED]
A container for replication rules. You can add up to 1,000 rules. The maximum size of a replication configuration is 2 MB.
Role (string) – [REQUIRED]
The Amazon Resource Name (ARN) of the Identity and Access Management (IAM) role that Amazon S3 assumes when replicating objects. For more information, see How to Set Up Replication in the Amazon S3 User Guide.
Rules (list) – [REQUIRED]
A container for one or more replication rules. A replication configuration must have at least one rule and can contain a maximum of 1,000 rules.
(dict) –
Specifies which Amazon S3 objects to replicate and where to store the replicas.
ID (string) –
A unique identifier for the rule. The maximum value is 255 characters.
Priority (integer) –
The priority indicates which rule has precedence whenever two or more replication rules conflict. Amazon S3 will attempt to replicate objects according to all replication rules. However, if there are two or more rules with the same destination bucket, then objects will be replicated according to the rule with the highest priority. The higher the number, the higher the priority.
For more information, see Replication in the Amazon S3 User Guide.
Prefix (string) –
An object key name prefix that identifies the object or objects to which the rule applies. The maximum prefix length is 1,024 characters. To include all objects in a bucket, specify an empty string.
Warning
Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see XML related object key constraints.
Filter (dict) –
A filter that identifies the subset of objects to which the replication rule applies. A
Filter
must specify exactly onePrefix
,Tag
, or anAnd
child element.Prefix (string) –
An object key name prefix that identifies the subset of objects to which the rule applies.
Warning
Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see XML related object key constraints.
Tag (dict) –
A container for specifying a tag key and value.
The rule applies only to objects that have the tag in their tag set.
Key (string) – [REQUIRED]
Name of the object key.
Value (string) – [REQUIRED]
Value of the tag.
And (dict) –
A container for specifying rule filters. The filters determine the subset of objects to which the rule applies. This element is required only if you specify more than one filter. For example:
If you specify both a
Prefix
and aTag
filter, wrap these filters in anAnd
tag.If you specify a filter based on multiple tags, wrap the
Tag
elements in anAnd
tag.
Prefix (string) –
An object key name prefix that identifies the subset of objects to which the rule applies.
Tags (list) –
An array of tags containing key and value pairs.
(dict) –
A container of a key value name pair.
Key (string) – [REQUIRED]
Name of the object key.
Value (string) – [REQUIRED]
Value of the tag.
Status (string) – [REQUIRED]
Specifies whether the rule is enabled.
SourceSelectionCriteria (dict) –
A container that describes additional filters for identifying the source objects that you want to replicate. You can choose to enable or disable the replication of these objects. Currently, Amazon S3 supports only the filter that you can specify for objects created with server-side encryption using a customer managed key stored in Amazon Web Services Key Management Service (SSE-KMS).
SseKmsEncryptedObjects (dict) –
A container for filter information for the selection of Amazon S3 objects encrypted with Amazon Web Services KMS. If you include
SourceSelectionCriteria
in the replication configuration, this element is required.Status (string) – [REQUIRED]
Specifies whether Amazon S3 replicates objects created with server-side encryption using an Amazon Web Services KMS key stored in Amazon Web Services Key Management Service.
ReplicaModifications (dict) –
A filter that you can specify for selections for modifications on replicas. Amazon S3 doesn’t replicate replica modifications by default. In the latest version of replication configuration (when
Filter
is specified), you can specify this element and set the status toEnabled
to replicate modifications on replicas.Note
If you don’t specify the
Filter
element, Amazon S3 assumes that the replication configuration is the earlier version, V1. In the earlier version, this element is not allowedStatus (string) – [REQUIRED]
Specifies whether Amazon S3 replicates modifications on replicas.
ExistingObjectReplication (dict) –
Optional configuration to replicate existing source bucket objects.
Note
This parameter is no longer supported. To replicate existing objects, see Replicating existing objects with S3 Batch Replication in the Amazon S3 User Guide.
Status (string) – [REQUIRED]
Specifies whether Amazon S3 replicates existing source bucket objects.
Destination (dict) – [REQUIRED]
A container for information about the replication destination and its configurations including enabling the S3 Replication Time Control (S3 RTC).
Bucket (string) – [REQUIRED]
The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to store the results.
Account (string) –
Destination bucket owner account ID. In a cross-account scenario, if you direct Amazon S3 to change replica ownership to the Amazon Web Services account that owns the destination bucket by specifying the
AccessControlTranslation
property, this is the account ID of the destination bucket owner. For more information, see Replication Additional Configuration: Changing the Replica Owner in the Amazon S3 User Guide.StorageClass (string) –
The storage class to use when replicating objects, such as S3 Standard or reduced redundancy. By default, Amazon S3 uses the storage class of the source object to create the object replica.
For valid values, see the
StorageClass
element of the PUT Bucket replication action in the Amazon S3 API Reference.AccessControlTranslation (dict) –
Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the Amazon Web Services account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same Amazon Web Services account that owns the source object.
Owner (string) – [REQUIRED]
Specifies the replica ownership. For default and valid values, see PUT bucket replication in the Amazon S3 API Reference.
EncryptionConfiguration (dict) –
A container that provides information about encryption. If
SourceSelectionCriteria
is specified, you must specify this element.ReplicaKmsKeyID (string) –
Specifies the ID (Key ARN or Alias ARN) of the customer managed Amazon Web Services KMS key stored in Amazon Web Services Key Management Service (KMS) for the destination bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only supports symmetric encryption KMS keys. For more information, see Asymmetric keys in Amazon Web Services KMS in the Amazon Web Services Key Management Service Developer Guide.
ReplicationTime (dict) –
A container specifying S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. Must be specified together with a
Metrics
block.Status (string) – [REQUIRED]
Specifies whether the replication time is enabled.
Time (dict) – [REQUIRED]
A container specifying the time by which replication should be complete for all objects and operations on objects.
Minutes (integer) –
Contains an integer specifying time in minutes.
Valid value: 15
Metrics (dict) –
A container specifying replication metrics-related settings enabling replication metrics and events.
Status (string) – [REQUIRED]
Specifies whether the replication metrics are enabled.
EventThreshold (dict) –
A container specifying the time threshold for emitting the
s3:Replication:OperationMissedThreshold
event.Minutes (integer) –
Contains an integer specifying time in minutes.
Valid value: 15
DeleteMarkerReplication (dict) –
Specifies whether Amazon S3 replicates delete markers. If you specify a
Filter
in your replication configuration, you must also include aDeleteMarkerReplication
element. If yourFilter
includes aTag
element, theDeleteMarkerReplication
Status
must be set to Disabled, because Amazon S3 does not support replicating delete markers for tag-based rules. For an example configuration, see Basic Rule Configuration.For more information about delete marker replication, see Basic Rule Configuration.
Note
If you are using an earlier version of the replication configuration, Amazon S3 handles replication of delete markers differently. For more information, see Backward Compatibility.
Status (string) –
Indicates whether to replicate delete markers.
Note
Indicates whether to replicate delete markers.
Token (string) – A token to allow Object Lock to be enabled for an existing bucket.
ExpectedBucketOwner (string) – The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code
403 Forbidden
(access denied).
- Returns:
None
Examples
The following example sets replication configuration on a bucket.
response = client.put_bucket_replication( Bucket='examplebucket', ReplicationConfiguration={ 'Role': 'arn:aws:iam::123456789012:role/examplerole', 'Rules': [ { 'Destination': { 'Bucket': 'arn:aws:s3:::destinationbucket', 'StorageClass': 'STANDARD', }, 'Prefix': '', 'Status': 'Enabled', }, ], }, ) print(response)
Expected Output:
{ 'ResponseMetadata': { '...': '...', }, }