[ aws . s3api ]

put-bucket-replication

Description

Creates a replication configuration or replaces an existing one. For more information, see Replication in the Amazon S3 Developer Guide .

Note

To perform this operation, the user or role performing the operation must have the iam:PassRole permission.

Specify the replication configuration in the request body. In the replication configuration, you provide the name of the destination bucket 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.

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. All rules must specify the same destination bucket.

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 , and Priority .

For information about enabling versioning on a bucket, see Using Versioning .

By default, a resource owner, in this case the AWS 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 .

Handling Replication of Encrypted Objects

By default, Amazon S3 doesn’t replicate objects that are stored at rest using server-side encryption with CMKs stored in AWS KMS. To replicate AWS KMS-encrypted objects, add the following: SourceSelectionCriteria , SseKmsEncryptedObjects , Status , EncryptionConfiguration , and ReplicaKmsKeyID . For information about replication configuration, see Replicating Objects Created with SSE Using CMKs stored in AWS KMS .

For information on PutBucketReplication errors, see ReplicationErrorCodeList

The following operations are related to PutBucketReplication :

  • GetBucketReplication

  • DeleteBucketReplication

See also: AWS API Documentation

See ‘aws help’ for descriptions of global parameters.

Synopsis

  put-bucket-replication
--bucket <value>
[--content-md5 <value>]
--replication-configuration <value>
[--token <value>]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
[--cli-auto-prompt <value>]

Options

--bucket (string)

The name of the bucket

--content-md5 (string)

The base64-encoded 128-bit MD5 digest of the data. You must use this header as a message integrity check to verify that the request body was not corrupted in transit. For more information, see RFC 1864 .

--replication-configuration (structure)

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)

The Amazon Resource Name (ARN) of the AWS 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 Simple Storage Service Developer Guide .

Rules -> (list)

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.

(structure)

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 associated with the rule. If you specify multiple rules in a replication configuration, Amazon S3 prioritizes the rules to prevent conflicts when filtering. If two or more rules identify the same object based on a specified filter, the rule with higher priority takes precedence. For example:

  • Same object quality prefix-based filter criteria if prefixes you specified in multiple rules overlap

  • Same object qualify tag-based filter criteria specified in multiple rules

For more information, see `Replication < https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html>`__ in the Amazon Simple Storage Service Developer 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.

Filter -> (structure)

A filter that identifies the subset of objects to which the replication rule applies. A Filter must specify exactly one Prefix , Tag , or an And child element.

Prefix -> (string)

An object key name prefix that identifies the subset of objects to which the rule applies.

Tag -> (structure)

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)

Name of the tag.

Value -> (string)

Value of the tag.

And -> (structure)

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 a Tag filter, wrap these filters in an And tag.

  • If you specify a filter based on multiple tags, wrap the Tag elements in an And 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.

(structure)

A container of a key value name pair.

Key -> (string)

Name of the tag.

Value -> (string)

Value of the tag.

Status -> (string)

Specifies whether the rule is enabled.

SourceSelectionCriteria -> (structure)

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 master key (CMK) stored in AWS Key Management Service (SSE-KMS).

SseKmsEncryptedObjects -> (structure)

A container for filter information for the selection of Amazon S3 objects encrypted with AWS KMS. If you include SourceSelectionCriteria in the replication configuration, this element is required.

Status -> (string)

Specifies whether Amazon S3 replicates objects created with server-side encryption using a customer master key (CMK) stored in AWS Key Management Service.

ExistingObjectReplication -> (structure)

Status -> (string)

Destination -> (structure)

A container for information about the replication destination and its configurations including enabling the S3 Replication Time Control (S3 RTC).

Bucket -> (string)

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 AWS 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 Simple Storage Service Developer 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 Simple Storage Service API Reference .

AccessControlTranslation -> (structure)

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 AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object.

Owner -> (string)

Specifies the replica ownership. For default and valid values, see PUT bucket replication in the Amazon Simple Storage Service API Reference .

EncryptionConfiguration -> (structure)

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 customer master key (CMK) stored in AWS Key Management Service (KMS) for the destination bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only supports symmetric customer managed CMKs. For more information, see Using Symmetric and Asymmetric Keys in the AWS Key Management Service Developer Guide .

ReplicationTime -> (structure)

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)

Specifies whether the replication time is enabled.

Time -> (structure)

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 values: 15 minutes.

Metrics -> (structure)

A container specifying replication metrics-related settings enabling metrics and Amazon S3 events for S3 Replication Time Control (S3 RTC). Must be specified together with a ReplicationTime block.

Status -> (string)

Specifies whether the replication metrics are enabled.

EventThreshold -> (structure)

A container specifying the time threshold for emitting the s3:Replication:OperationMissedThreshold event.

Minutes -> (integer)

Contains an integer specifying time in minutes.

Valid values: 15 minutes.

DeleteMarkerReplication -> (structure)

Specifies whether Amazon S3 replicates the delete markers. If you specify a Filter , you must specify this element. However, in the latest version of replication configuration (when Filter is specified), Amazon S3 doesn’t replicate delete markers. Therefore, the DeleteMarkerReplication element can contain only <Status>Disabled</Status>. For an example configuration, see Basic Rule Configuration .

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, Amazon S3 handled replication of delete markers differently. For more information, see Backward Compatibility .

Status -> (string)

Indicates whether to replicate delete markers.

Note

In the current implementation, Amazon S3 doesn’t replicate the delete markers. The status must be Disabled .

JSON Syntax:

{
  "Role": "string",
  "Rules": [
    {
      "ID": "string",
      "Priority": integer,
      "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"
        }
      },
      "ExistingObjectReplication": {
        "Status": "Enabled"|"Disabled"
      },
      "Destination": {
        "Bucket": "string",
        "Account": "string",
        "StorageClass": "STANDARD"|"REDUCED_REDUNDANCY"|"STANDARD_IA"|"ONEZONE_IA"|"INTELLIGENT_TIERING"|"GLACIER"|"DEEP_ARCHIVE",
        "AccessControlTranslation": {
          "Owner": "Destination"
        },
        "EncryptionConfiguration": {
          "ReplicaKmsKeyID": "string"
        },
        "ReplicationTime": {
          "Status": "Enabled"|"Disabled",
          "Time": {
            "Minutes": integer
          }
        },
        "Metrics": {
          "Status": "Enabled"|"Disabled",
          "EventThreshold": {
            "Minutes": integer
          }
        }
      },
      "DeleteMarkerReplication": {
        "Status": "Enabled"|"Disabled"
      }
    }
    ...
  ]
}

--token (string)

--cli-input-json | --cli-input-yaml (string) Reads arguments from the JSON string provided. The JSON string follows the format provided by --generate-cli-skeleton. If other arguments are provided on the command line, those values will override the JSON-provided values. It is not possible to pass arbitrary binary values using a JSON-provided value as the string will be taken literally. This may not be specified along with --cli-input-yaml.

--generate-cli-skeleton (string) Prints a JSON skeleton to standard output without sending an API request. If provided with no value or the value input, prints a sample input JSON that can be used as an argument for --cli-input-json. Similarly, if provided yaml-input it will print a sample input YAML that can be used with --cli-input-yaml. If provided with the value output, it validates the command inputs and returns a sample output JSON for that command.

--cli-auto-prompt (boolean) Automatically prompt for CLI input parameters.

See ‘aws help’ for descriptions of global parameters.

Examples

To configure replication for an S3 bucket

The following put-bucket-replication example applies a replication configuration to the specified S3 bucket.

aws s3api put-bucket-replication \
    --bucket my-bucket \
    --replication-configuration file://replication.json

Contents of 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:::my-bucket-backup"
            }
        }
    ]
}

The destination bucket must be in a different region and have versioning enabled. The specified role must have permission to write to the destination bucket and have a trust relationship that allows Amazon S3 to assume the role.

Example role permission policy:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

Example trust relationship policy:

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

Output

None