import { Command as $Command } from "@smithy/smithy-client"; import { MetadataBearer as __MetadataBearer } from "@smithy/types"; import { PutBucketReplicationRequest } from "../models/models_1"; import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; /** * @public */ export type { __MetadataBearer }; export { $Command }; /** * @public * * The input for {@link PutBucketReplicationCommand}. */ export interface PutBucketReplicationCommandInput extends PutBucketReplicationRequest { } /** * @public * * The output of {@link PutBucketReplicationCommand}. */ export interface PutBucketReplicationCommandOutput extends __MetadataBearer { } declare const PutBucketReplicationCommand_base: { new (input: PutBucketReplicationCommandInput): import("@smithy/smithy-client").CommandImpl; new (__0_0: PutBucketReplicationCommandInput): import("@smithy/smithy-client").CommandImpl; getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; }; /** * *

This operation is not supported by 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, and * Priority.

* *

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, and ReplicaKmsKeyID. 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 codes *

*
*
Permissions
*
*

To create a PutBucketReplication request, you must have * s3: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.

* *

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

*
*
*
*

The following operations are related to PutBucketReplication:

* * @example * Use a bare-bones client and the command you need to make an API call. * ```javascript * import { S3Client, PutBucketReplicationCommand } from "@aws-sdk/client-s3"; // ES Modules import * // const { S3Client, PutBucketReplicationCommand } = require("@aws-sdk/client-s3"); // CommonJS import * const client = new S3Client(config); * const input = { // PutBucketReplicationRequest * Bucket: "STRING_VALUE", // required * ContentMD5: "STRING_VALUE", * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256", * ReplicationConfiguration: { // ReplicationConfiguration * Role: "STRING_VALUE", // required * Rules: [ // ReplicationRules // required * { // ReplicationRule * ID: "STRING_VALUE", * Priority: Number("int"), * Prefix: "STRING_VALUE", * Filter: { // ReplicationRuleFilter Union: only one key present * Prefix: "STRING_VALUE", * Tag: { // Tag * Key: "STRING_VALUE", // required * Value: "STRING_VALUE", // required * }, * And: { // ReplicationRuleAndOperator * Prefix: "STRING_VALUE", * Tags: [ // TagSet * { * Key: "STRING_VALUE", // required * Value: "STRING_VALUE", // required * }, * ], * }, * }, * Status: "Enabled" || "Disabled", // required * SourceSelectionCriteria: { // SourceSelectionCriteria * SseKmsEncryptedObjects: { // SseKmsEncryptedObjects * Status: "Enabled" || "Disabled", // required * }, * ReplicaModifications: { // ReplicaModifications * Status: "Enabled" || "Disabled", // required * }, * }, * ExistingObjectReplication: { // ExistingObjectReplication * Status: "Enabled" || "Disabled", // required * }, * Destination: { // Destination * Bucket: "STRING_VALUE", // required * Account: "STRING_VALUE", * StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE", * AccessControlTranslation: { // AccessControlTranslation * Owner: "Destination", // required * }, * EncryptionConfiguration: { // EncryptionConfiguration * ReplicaKmsKeyID: "STRING_VALUE", * }, * ReplicationTime: { // ReplicationTime * Status: "Enabled" || "Disabled", // required * Time: { // ReplicationTimeValue * Minutes: Number("int"), * }, * }, * Metrics: { // Metrics * Status: "Enabled" || "Disabled", // required * EventThreshold: { * Minutes: Number("int"), * }, * }, * }, * DeleteMarkerReplication: { // DeleteMarkerReplication * Status: "Enabled" || "Disabled", * }, * }, * ], * }, * Token: "STRING_VALUE", * ExpectedBucketOwner: "STRING_VALUE", * }; * const command = new PutBucketReplicationCommand(input); * const response = await client.send(command); * // {}; * * ``` * * @param PutBucketReplicationCommandInput - {@link PutBucketReplicationCommandInput} * @returns {@link PutBucketReplicationCommandOutput} * @see {@link PutBucketReplicationCommandInput} for command's `input` shape. * @see {@link PutBucketReplicationCommandOutput} for command's `response` shape. * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. * * @throws {@link S3ServiceException} *

Base exception class for all service exceptions from S3 service.

* * @public * @example Set replication configuration on a bucket * ```javascript * // The following example sets replication configuration on a bucket. * const input = { * "Bucket": "examplebucket", * "ReplicationConfiguration": { * "Role": "arn:aws:iam::123456789012:role/examplerole", * "Rules": [ * { * "Destination": { * "Bucket": "arn:aws:s3:::destinationbucket", * "StorageClass": "STANDARD" * }, * "Prefix": "", * "Status": "Enabled" * } * ] * } * }; * const command = new PutBucketReplicationCommand(input); * await client.send(command); * // example id: id-1 * ``` * */ export declare class PutBucketReplicationCommand extends PutBucketReplicationCommand_base { }