AWS SDK

AWS SDK

rev. d8779bdf94938a194237beaa6a569c9e3849b504

Files changed:

tmp-codegen-diff/aws-sdk/sdk/ecs/src/endpoint_lib/partition.rs

@@ -3,3 +62,63 @@
   23     23   
    partitions: Vec<PartitionMetadata>,
   24     24   
}
   25     25   
   26     26   
impl PartitionResolver {
   27     27   
    pub(crate) fn from_partitions(partitions: Vec<PartitionMetadata>) -> Self {
   28     28   
        Self { partitions }
   29     29   
    }
   30     30   
}
   31     31   
   32     32   
/// Partition result returned from partition resolver
          33  +
#[derive(Debug, Default, Clone)]
   33     34   
pub(crate) struct Partition<'a> {
   34     35   
    name: &'a str,
   35     36   
    dns_suffix: &'a str,
   36     37   
    dual_stack_dns_suffix: &'a str,
   37     38   
    supports_fips: bool,
   38     39   
    supports_dual_stack: bool,
   39     40   
    implicit_global_region: &'a str,
   40     41   
}
   41     42   
   42     43   
#[allow(unused)]

tmp-codegen-diff/aws-sdk/sdk/glacier/src/endpoint_lib/diagnostic.rs

@@ -7,7 +45,46 @@
   27     27   
    pub(crate) fn capture<T, E: Into<Box<dyn Error + Send + Sync>>>(&mut self, err: Result<T, E>) -> Option<T> {
   28     28   
        match err {
   29     29   
            Ok(res) => Some(res),
   30     30   
            Err(e) => {
   31     31   
                self.report_error(e);
   32     32   
                None
   33     33   
            }
   34     34   
        }
   35     35   
    }
   36     36   
          37  +
    #[allow(dead_code)]
   37     38   
    pub(crate) fn take_last_error(&mut self) -> Option<Box<dyn Error + Send + Sync>> {
   38     39   
        self.last_error.take()
   39     40   
    }
   40     41   
   41     42   
    /// Create a new diagnostic collector
   42     43   
    pub(crate) fn new() -> Self {
   43     44   
        Self { last_error: None }
   44     45   
    }
   45     46   
}

tmp-codegen-diff/aws-sdk/sdk/glacier/src/endpoint_lib/partition.rs

@@ -3,3 +62,63 @@
   23     23   
    partitions: Vec<PartitionMetadata>,
   24     24   
}
   25     25   
   26     26   
impl PartitionResolver {
   27     27   
    pub(crate) fn from_partitions(partitions: Vec<PartitionMetadata>) -> Self {
   28     28   
        Self { partitions }
   29     29   
    }
   30     30   
}
   31     31   
   32     32   
/// Partition result returned from partition resolver
          33  +
#[derive(Debug, Default, Clone)]
   33     34   
pub(crate) struct Partition<'a> {
   34     35   
    name: &'a str,
   35     36   
    dns_suffix: &'a str,
   36     37   
    dual_stack_dns_suffix: &'a str,
   37     38   
    supports_fips: bool,
   38     39   
    supports_dual_stack: bool,
   39     40   
    implicit_global_region: &'a str,
   40     41   
}
   41     42   
   42     43   
#[allow(unused)]

tmp-codegen-diff/aws-sdk/sdk/iam/src/endpoint_lib/diagnostic.rs

@@ -7,7 +45,46 @@
   27     27   
    pub(crate) fn capture<T, E: Into<Box<dyn Error + Send + Sync>>>(&mut self, err: Result<T, E>) -> Option<T> {
   28     28   
        match err {
   29     29   
            Ok(res) => Some(res),
   30     30   
            Err(e) => {
   31     31   
                self.report_error(e);
   32     32   
                None
   33     33   
            }
   34     34   
        }
   35     35   
    }
   36     36   
          37  +
    #[allow(dead_code)]
   37     38   
    pub(crate) fn take_last_error(&mut self) -> Option<Box<dyn Error + Send + Sync>> {
   38     39   
        self.last_error.take()
   39     40   
    }
   40     41   
   41     42   
    /// Create a new diagnostic collector
   42     43   
    pub(crate) fn new() -> Self {
   43     44   
        Self { last_error: None }
   44     45   
    }
   45     46   
}

tmp-codegen-diff/aws-sdk/sdk/iam/src/endpoint_lib/partition.rs

@@ -3,3 +62,63 @@
   23     23   
    partitions: Vec<PartitionMetadata>,
   24     24   
}
   25     25   
   26     26   
impl PartitionResolver {
   27     27   
    pub(crate) fn from_partitions(partitions: Vec<PartitionMetadata>) -> Self {
   28     28   
        Self { partitions }
   29     29   
    }
   30     30   
}
   31     31   
   32     32   
/// Partition result returned from partition resolver
          33  +
#[derive(Debug, Default, Clone)]
   33     34   
pub(crate) struct Partition<'a> {
   34     35   
    name: &'a str,
   35     36   
    dns_suffix: &'a str,
   36     37   
    dual_stack_dns_suffix: &'a str,
   37     38   
    supports_fips: bool,
   38     39   
    supports_dual_stack: bool,
   39     40   
    implicit_global_region: &'a str,
   40     41   
}
   41     42   
   42     43   
#[allow(unused)]

tmp-codegen-diff/aws-sdk/sdk/kms/src/endpoint_lib/diagnostic.rs

@@ -7,7 +45,46 @@
   27     27   
    pub(crate) fn capture<T, E: Into<Box<dyn Error + Send + Sync>>>(&mut self, err: Result<T, E>) -> Option<T> {
   28     28   
        match err {
   29     29   
            Ok(res) => Some(res),
   30     30   
            Err(e) => {
   31     31   
                self.report_error(e);
   32     32   
                None
   33     33   
            }
   34     34   
        }
   35     35   
    }
   36     36   
          37  +
    #[allow(dead_code)]
   37     38   
    pub(crate) fn take_last_error(&mut self) -> Option<Box<dyn Error + Send + Sync>> {
   38     39   
        self.last_error.take()
   39     40   
    }
   40     41   
   41     42   
    /// Create a new diagnostic collector
   42     43   
    pub(crate) fn new() -> Self {
   43     44   
        Self { last_error: None }
   44     45   
    }
   45     46   
}

tmp-codegen-diff/aws-sdk/sdk/kms/src/endpoint_lib/partition.rs

@@ -3,3 +62,63 @@
   23     23   
    partitions: Vec<PartitionMetadata>,
   24     24   
}
   25     25   
   26     26   
impl PartitionResolver {
   27     27   
    pub(crate) fn from_partitions(partitions: Vec<PartitionMetadata>) -> Self {
   28     28   
        Self { partitions }
   29     29   
    }
   30     30   
}
   31     31   
   32     32   
/// Partition result returned from partition resolver
          33  +
#[derive(Debug, Default, Clone)]
   33     34   
pub(crate) struct Partition<'a> {
   34     35   
    name: &'a str,
   35     36   
    dns_suffix: &'a str,
   36     37   
    dual_stack_dns_suffix: &'a str,
   37     38   
    supports_fips: bool,
   38     39   
    supports_dual_stack: bool,
   39     40   
    implicit_global_region: &'a str,
   40     41   
}
   41     42   
   42     43   
#[allow(unused)]

tmp-codegen-diff/aws-sdk/sdk/lambda/src/endpoint_lib/diagnostic.rs

@@ -7,7 +45,46 @@
   27     27   
    pub(crate) fn capture<T, E: Into<Box<dyn Error + Send + Sync>>>(&mut self, err: Result<T, E>) -> Option<T> {
   28     28   
        match err {
   29     29   
            Ok(res) => Some(res),
   30     30   
            Err(e) => {
   31     31   
                self.report_error(e);
   32     32   
                None
   33     33   
            }
   34     34   
        }
   35     35   
    }
   36     36   
          37  +
    #[allow(dead_code)]
   37     38   
    pub(crate) fn take_last_error(&mut self) -> Option<Box<dyn Error + Send + Sync>> {
   38     39   
        self.last_error.take()
   39     40   
    }
   40     41   
   41     42   
    /// Create a new diagnostic collector
   42     43   
    pub(crate) fn new() -> Self {
   43     44   
        Self { last_error: None }
   44     45   
    }
   45     46   
}

tmp-codegen-diff/aws-sdk/sdk/lambda/src/endpoint_lib/partition.rs

@@ -3,3 +62,63 @@
   23     23   
    partitions: Vec<PartitionMetadata>,
   24     24   
}
   25     25   
   26     26   
impl PartitionResolver {
   27     27   
    pub(crate) fn from_partitions(partitions: Vec<PartitionMetadata>) -> Self {
   28     28   
        Self { partitions }
   29     29   
    }
   30     30   
}
   31     31   
   32     32   
/// Partition result returned from partition resolver
          33  +
#[derive(Debug, Default, Clone)]
   33     34   
pub(crate) struct Partition<'a> {
   34     35   
    name: &'a str,
   35     36   
    dns_suffix: &'a str,
   36     37   
    dual_stack_dns_suffix: &'a str,
   37     38   
    supports_fips: bool,
   38     39   
    supports_dual_stack: bool,
   39     40   
    implicit_global_region: &'a str,
   40     41   
}
   41     42   
   42     43   
#[allow(unused)]

tmp-codegen-diff/aws-sdk/sdk/polly/src/endpoint_lib/diagnostic.rs

@@ -7,7 +45,46 @@
   27     27   
    pub(crate) fn capture<T, E: Into<Box<dyn Error + Send + Sync>>>(&mut self, err: Result<T, E>) -> Option<T> {
   28     28   
        match err {
   29     29   
            Ok(res) => Some(res),
   30     30   
            Err(e) => {
   31     31   
                self.report_error(e);
   32     32   
                None
   33     33   
            }
   34     34   
        }
   35     35   
    }
   36     36   
          37  +
    #[allow(dead_code)]
   37     38   
    pub(crate) fn take_last_error(&mut self) -> Option<Box<dyn Error + Send + Sync>> {
   38     39   
        self.last_error.take()
   39     40   
    }
   40     41   
   41     42   
    /// Create a new diagnostic collector
   42     43   
    pub(crate) fn new() -> Self {
   43     44   
        Self { last_error: None }
   44     45   
    }
   45     46   
}

tmp-codegen-diff/aws-sdk/sdk/polly/src/endpoint_lib/partition.rs

@@ -3,3 +62,63 @@
   23     23   
    partitions: Vec<PartitionMetadata>,
   24     24   
}
   25     25   
   26     26   
impl PartitionResolver {
   27     27   
    pub(crate) fn from_partitions(partitions: Vec<PartitionMetadata>) -> Self {
   28     28   
        Self { partitions }
   29     29   
    }
   30     30   
}
   31     31   
   32     32   
/// Partition result returned from partition resolver
          33  +
#[derive(Debug, Default, Clone)]
   33     34   
pub(crate) struct Partition<'a> {
   34     35   
    name: &'a str,
   35     36   
    dns_suffix: &'a str,
   36     37   
    dual_stack_dns_suffix: &'a str,
   37     38   
    supports_fips: bool,
   38     39   
    supports_dual_stack: bool,
   39     40   
    implicit_global_region: &'a str,
   40     41   
}
   41     42   
   42     43   
#[allow(unused)]

tmp-codegen-diff/aws-sdk/sdk/route53/src/endpoint_lib/diagnostic.rs

@@ -7,7 +45,46 @@
   27     27   
    pub(crate) fn capture<T, E: Into<Box<dyn Error + Send + Sync>>>(&mut self, err: Result<T, E>) -> Option<T> {
   28     28   
        match err {
   29     29   
            Ok(res) => Some(res),
   30     30   
            Err(e) => {
   31     31   
                self.report_error(e);
   32     32   
                None
   33     33   
            }
   34     34   
        }
   35     35   
    }
   36     36   
          37  +
    #[allow(dead_code)]
   37     38   
    pub(crate) fn take_last_error(&mut self) -> Option<Box<dyn Error + Send + Sync>> {
   38     39   
        self.last_error.take()
   39     40   
    }
   40     41   
   41     42   
    /// Create a new diagnostic collector
   42     43   
    pub(crate) fn new() -> Self {
   43     44   
        Self { last_error: None }
   44     45   
    }
   45     46   
}

tmp-codegen-diff/aws-sdk/sdk/route53/src/endpoint_lib/partition.rs

@@ -3,3 +62,63 @@
   23     23   
    partitions: Vec<PartitionMetadata>,
   24     24   
}
   25     25   
   26     26   
impl PartitionResolver {
   27     27   
    pub(crate) fn from_partitions(partitions: Vec<PartitionMetadata>) -> Self {
   28     28   
        Self { partitions }
   29     29   
    }
   30     30   
}
   31     31   
   32     32   
/// Partition result returned from partition resolver
          33  +
#[derive(Debug, Default, Clone)]
   33     34   
pub(crate) struct Partition<'a> {
   34     35   
    name: &'a str,
   35     36   
    dns_suffix: &'a str,
   36     37   
    dual_stack_dns_suffix: &'a str,
   37     38   
    supports_fips: bool,
   38     39   
    supports_dual_stack: bool,
   39     40   
    implicit_global_region: &'a str,
   40     41   
}
   41     42   
   42     43   
#[allow(unused)]

tmp-codegen-diff/aws-sdk/sdk/s3/src/client.rs

@@ -234,234 +293,295 @@
  254    254   
mod delete_bucket_website;
  255    255   
  256    256   
mod delete_object;
  257    257   
  258    258   
mod delete_object_tagging;
  259    259   
  260    260   
mod delete_objects;
  261    261   
  262    262   
mod delete_public_access_block;
  263    263   
         264  +
mod get_bucket_abac;
         265  +
  264    266   
mod get_bucket_accelerate_configuration;
  265    267   
  266    268   
mod get_bucket_acl;
  267    269   
  268    270   
mod get_bucket_analytics_configuration;
  269    271   
  270    272   
mod get_bucket_cors;
  271    273   
  272    274   
mod get_bucket_encryption;
  273    275   
@@ -322,324 +381,385 @@
  342    344   
mod list_multipart_uploads;
  343    345   
  344    346   
mod list_object_versions;
  345    347   
  346    348   
mod list_objects;
  347    349   
  348    350   
mod list_objects_v2;
  349    351   
  350    352   
mod list_parts;
  351    353   
         354  +
mod put_bucket_abac;
         355  +
  352    356   
mod put_bucket_accelerate_configuration;
  353    357   
  354    358   
mod put_bucket_acl;
  355    359   
  356    360   
mod put_bucket_analytics_configuration;
  357    361   
  358    362   
mod put_bucket_cors;
  359    363   
  360    364   
mod put_bucket_encryption;
  361    365   

tmp-codegen-diff/aws-sdk/sdk/s3/src/client/complete_multipart_upload.rs

@@ -1,1 +45,45 @@
   20     20   
    ///   - [`if_none_match(impl Into<String>)`](crate::operation::complete_multipart_upload::builders::CompleteMultipartUploadFluentBuilder::if_none_match) / [`set_if_none_match(Option<String>)`](crate::operation::complete_multipart_upload::builders::CompleteMultipartUploadFluentBuilder::set_if_none_match):<br>required: **false**<br><p>Uploads the object only if the object key name does not already exist in the bucket specified. Otherwise, Amazon S3 returns a <code>412 Precondition Failed</code> error.</p> <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should re-initiate the multipart upload with <code>CreateMultipartUpload</code> and re-upload each part.</p> <p>Expects the '*' (asterisk) character.</p> <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p><br>
   21     21   
    ///   - [`sse_customer_algorithm(impl Into<String>)`](crate::operation::complete_multipart_upload::builders::CompleteMultipartUploadFluentBuilder::sse_customer_algorithm) / [`set_sse_customer_algorithm(Option<String>)`](crate::operation::complete_multipart_upload::builders::CompleteMultipartUploadFluentBuilder::set_sse_customer_algorithm):<br>required: **false**<br><p>The server-side encryption (SSE) algorithm used to encrypt the object. This parameter is required only when the object was created using a checksum algorithm or if your bucket policy requires the use of SSE-C. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html#ssec-require-condition-key">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p><note>  <p>This functionality is not supported for directory buckets.</p> </note><br>
   22     22   
    ///   - [`sse_customer_key(impl Into<String>)`](crate::operation::complete_multipart_upload::builders::CompleteMultipartUploadFluentBuilder::sse_customer_key) / [`set_sse_customer_key(Option<String>)`](crate::operation::complete_multipart_upload::builders::CompleteMultipartUploadFluentBuilder::set_sse_customer_key):<br>required: **false**<br><p>The server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p><note>  <p>This functionality is not supported for directory buckets.</p> </note><br>
   23     23   
    ///   - [`sse_customer_key_md5(impl Into<String>)`](crate::operation::complete_multipart_upload::builders::CompleteMultipartUploadFluentBuilder::sse_customer_key_md5) / [`set_sse_customer_key_md5(Option<String>)`](crate::operation::complete_multipart_upload::builders::CompleteMultipartUploadFluentBuilder::set_sse_customer_key_md5):<br>required: **false**<br><p>The MD5 server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p><note>  <p>This functionality is not supported for directory buckets.</p> </note><br>
   24     24   
    /// - On success, responds with [`CompleteMultipartUploadOutput`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput) with field(s):
   25     25   
    ///   - [`location(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::location): <p>The URI that identifies the newly created object.</p>
   26     26   
    ///   - [`bucket(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::bucket): <p>The name of the bucket that contains the newly created object. Does not return the access point ARN or access point alias if used.</p><note>  <p>Access points are not supported by directory buckets.</p> </note>
   27     27   
    ///   - [`key(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::key): <p>The object key of the newly created object.</p>
   28     28   
    ///   - [`expiration(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::expiration): <p>If the object expiration is configured, this will contain the expiration date (<code>expiry-date</code>) and rule ID (<code>rule-id</code>). The value of <code>rule-id</code> is URL-encoded.</p><note>  <p>This functionality is not supported for directory buckets.</p> </note>
   29     29   
    ///   - [`e_tag(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::e_tag): <p>Entity tag that identifies the newly created object's data. Objects with different object data will have different entity tags. The entity tag is an opaque string. The entity tag may or may not be an MD5 digest of the object data. If the entity tag is not an MD5 digest of the object data, it will contain one or more nonhexadecimal characters and/or will consist of less than 32 or more than 32 hexadecimal digits. For more information about how the entity tag is calculated, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
   30         -
    ///   - [`checksum_crc32(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::checksum_crc32): <p>The Base64 encoded, 32-bit <code>CRC32 checksum</code> of the object. This checksum is only be present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
          30  +
    ///   - [`checksum_crc32(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::checksum_crc32): <p>The Base64 encoded, 32-bit <code>CRC32 checksum</code> of the object. This checksum is only present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
   31     31   
    ///   - [`checksum_crc32_c(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::checksum_crc32_c): <p>The Base64 encoded, 32-bit <code>CRC32C</code> checksum of the object. This checksum is only present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
   32     32   
    ///   - [`checksum_crc64_nvme(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::checksum_crc64_nvme): <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 64-bit <code>CRC64NVME</code> checksum of the object. The <code>CRC64NVME</code> checksum is always a full object checksum. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
   33         -
    ///   - [`checksum_sha1(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::checksum_sha1): <p>The Base64 encoded, 160-bit <code>SHA1</code> digest of the object. This will only be present if the object was uploaded with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
   34         -
    ///   - [`checksum_sha256(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::checksum_sha256): <p>The Base64 encoded, 256-bit <code>SHA256</code> digest of the object. This will only be present if the object was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
          33  +
    ///   - [`checksum_sha1(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::checksum_sha1): <p>The Base64 encoded, 160-bit <code>SHA1</code> digest of the object. This checksum is only present if the checksum was uploaded with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
          34  +
    ///   - [`checksum_sha256(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::checksum_sha256): <p>The Base64 encoded, 256-bit <code>SHA256</code> digest of the object. This checksum is only present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
   35     35   
    ///   - [`checksum_type(Option<ChecksumType>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::checksum_type): <p>The checksum type, which determines how part-level checksums are combined to create an object-level checksum for multipart objects. You can use this header as a data integrity check to verify that the checksum type that is received is the same checksum type that was specified during the <code>CreateMultipartUpload</code> request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
   36     36   
    ///   - [`server_side_encryption(Option<ServerSideEncryption>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::server_side_encryption): <p>The server-side encryption algorithm used when storing this object in Amazon S3.</p><note>  <p>When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side encryption option is <code>aws:fsx</code>.</p> </note> <p></p>
   37     37   
    ///   - [`version_id(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::version_id): <p>Version ID of the newly created object, in case the bucket has versioning turned on.</p><note>  <p>This functionality is not supported for directory buckets.</p> </note>
   38     38   
    ///   - [`ssekms_key_id(Option<String>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::ssekms_key_id): <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
   39     39   
    ///   - [`bucket_key_enabled(Option<bool>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::bucket_key_enabled): <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
   40     40   
    ///   - [`request_charged(Option<RequestCharged>)`](crate::operation::complete_multipart_upload::CompleteMultipartUploadOutput::request_charged): <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>  <p>This functionality is not supported for directory buckets.</p> </note>
   41     41   
    /// - On failure, responds with [`SdkError<CompleteMultipartUploadError>`](crate::operation::complete_multipart_upload::CompleteMultipartUploadError)
   42     42   
    pub fn complete_multipart_upload(&self) -> crate::operation::complete_multipart_upload::builders::CompleteMultipartUploadFluentBuilder {
   43     43   
        crate::operation::complete_multipart_upload::builders::CompleteMultipartUploadFluentBuilder::new(self.handle.clone())
   44     44   
    }

tmp-codegen-diff/aws-sdk/sdk/s3/src/client/copy_object.rs

@@ -1,1 +53,55 @@
   14     14   
    ///   - [`copy_source(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::copy_source) / [`set_copy_source(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_copy_source):<br>required: **true**<br><p>Specifies the source object for the copy operation. The source object can be up to 5 GB. If the source object is an object that was uploaded by using a multipart upload, the object copy will be a single part object after the source object is copied to the destination bucket.</p> <p>You specify the value of the copy source in one of two formats, depending on whether you want to access the source object through an <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html">access point</a>:</p> <ul>  <li>   <p>For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (/). For example, to copy the object <code>reports/january.pdf</code> from the general purpose bucket <code>awsexamplebucket</code>, use <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL-encoded. To copy the object <code>reports/january.pdf</code> from the directory bucket <code>awsexamplebucket--use1-az5--x-s3</code>, use <code>awsexamplebucket--use1-az5--x-s3/reports/january.pdf</code>. The value must be URL-encoded.</p></li>  <li>   <p>For objects accessed through access points, specify the Amazon Resource Name (ARN) of the object as accessed through the access point, in the format <code>arn:aws:s3:<region>      :      <account-id>       :accesspoint/       <access-point-name>        /object/        <key></key>       </access-point-name>      </account-id>     </region></code>. For example, to copy the object <code>reports/january.pdf</code> through access point <code>my-access-point</code> owned by account <code>123456789012</code> in Region <code>us-west-2</code>, use the URL encoding of <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>. The value must be URL encoded.</p><note>    <ul>     <li>      <p>Amazon S3 supports copy operations using Access points only when the source and destination buckets are in the same Amazon Web Services Region.</p></li>     <li>      <p>Access points are not supported by directory buckets.</p></li>    </ul>   </note>   <p>Alternatively, for objects accessed through Amazon S3 on Outposts, specify the ARN of the object as accessed in the format <code>arn:aws:s3-outposts:<region>      :      <account-id>       :outpost/       <outpost-id>        /object/        <key></key>       </outpost-id>      </account-id>     </region></code>. For example, to copy the object <code>reports/january.pdf</code> through outpost <code>my-outpost</code> owned by account <code>123456789012</code> in Region <code>us-west-2</code>, use the URL encoding of <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>. The value must be URL-encoded.</p></li> </ul> <p>If your source bucket versioning is enabled, the <code>x-amz-copy-source</code> header by default identifies the current version of an object to copy. If the current version is a delete marker, Amazon S3 behaves as if the object was deleted. To copy a different version, use the <code>versionId</code> query parameter. Specifically, append <code>?versionId=<version-id></version-id></code> to the value (for example, <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>). If you don't specify a version ID, Amazon S3 copies the latest version of the source object.</p> <p>If you enable versioning on the destination bucket, Amazon S3 generates a unique version ID for the copied object. This version ID is different from the version ID of the source object. Amazon S3 returns the version ID of the copied object in the <code>x-amz-version-id</code> response header in the response.</p> <p>If you do not enable versioning or suspend it on the destination bucket, the version ID that Amazon S3 generates in the <code>x-amz-version-id</code> response header is always null.</p><note>  <p><b>Directory buckets</b> - S3 Versioning isn't enabled and supported for directory buckets.</p> </note><br>
   15     15   
    ///   - [`copy_source_if_match(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::copy_source_if_match) / [`set_copy_source_if_match(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_copy_source_if_match):<br>required: **false**<br><p>Copies the object if its entity tag (ETag) matches the specified tag.</p> <p>If both the <code>x-amz-copy-source-if-match</code> and <code>x-amz-copy-source-if-unmodified-since</code> headers are present in the request and evaluate as follows, Amazon S3 returns <code>200 OK</code> and copies the data:</p> <ul>  <li>   <p><code>x-amz-copy-source-if-match</code> condition evaluates to true</p></li>  <li>   <p><code>x-amz-copy-source-if-unmodified-since</code> condition evaluates to false</p></li> </ul><br>
   16     16   
    ///   - [`copy_source_if_modified_since(DateTime)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::copy_source_if_modified_since) / [`set_copy_source_if_modified_since(Option<DateTime>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_copy_source_if_modified_since):<br>required: **false**<br><p>Copies the object if it has been modified since the specified time.</p> <p>If both the <code>x-amz-copy-source-if-none-match</code> and <code>x-amz-copy-source-if-modified-since</code> headers are present in the request and evaluate as follows, Amazon S3 returns the <code>412 Precondition Failed</code> response code:</p> <ul>  <li>   <p><code>x-amz-copy-source-if-none-match</code> condition evaluates to false</p></li>  <li>   <p><code>x-amz-copy-source-if-modified-since</code> condition evaluates to true</p></li> </ul><br>
   17     17   
    ///   - [`copy_source_if_none_match(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::copy_source_if_none_match) / [`set_copy_source_if_none_match(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_copy_source_if_none_match):<br>required: **false**<br><p>Copies the object if its entity tag (ETag) is different than the specified ETag.</p> <p>If both the <code>x-amz-copy-source-if-none-match</code> and <code>x-amz-copy-source-if-modified-since</code> headers are present in the request and evaluate as follows, Amazon S3 returns the <code>412 Precondition Failed</code> response code:</p> <ul>  <li>   <p><code>x-amz-copy-source-if-none-match</code> condition evaluates to false</p></li>  <li>   <p><code>x-amz-copy-source-if-modified-since</code> condition evaluates to true</p></li> </ul><br>
   18     18   
    ///   - [`copy_source_if_unmodified_since(DateTime)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::copy_source_if_unmodified_since) / [`set_copy_source_if_unmodified_since(Option<DateTime>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_copy_source_if_unmodified_since):<br>required: **false**<br><p>Copies the object if it hasn't been modified since the specified time.</p> <p>If both the <code>x-amz-copy-source-if-match</code> and <code>x-amz-copy-source-if-unmodified-since</code> headers are present in the request and evaluate as follows, Amazon S3 returns <code>200 OK</code> and copies the data:</p> <ul>  <li>   <p><code>x-amz-copy-source-if-match</code> condition evaluates to true</p></li>  <li>   <p><code>x-amz-copy-source-if-unmodified-since</code> condition evaluates to false</p></li> </ul><br>
   19     19   
    ///   - [`expires(DateTime)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::expires) / [`set_expires(Option<DateTime>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_expires):<br>required: **false**<br><p>The date and time at which the object is no longer cacheable.</p><br>
   20     20   
    ///   - [`grant_full_control(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::grant_full_control) / [`set_grant_full_control(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_grant_full_control):<br>required: **false**<br><p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p><note>  <ul>   <li>    <p>This functionality is not supported for directory buckets.</p></li>   <li>    <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>  </ul> </note><br>
   21     21   
    ///   - [`grant_read(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::grant_read) / [`set_grant_read(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_grant_read):<br>required: **false**<br><p>Allows grantee to read the object data and its metadata.</p><note>  <ul>   <li>    <p>This functionality is not supported for directory buckets.</p></li>   <li>    <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>  </ul> </note><br>
   22     22   
    ///   - [`grant_read_acp(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::grant_read_acp) / [`set_grant_read_acp(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_grant_read_acp):<br>required: **false**<br><p>Allows grantee to read the object ACL.</p><note>  <ul>   <li>    <p>This functionality is not supported for directory buckets.</p></li>   <li>    <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>  </ul> </note><br>
   23     23   
    ///   - [`grant_write_acp(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::grant_write_acp) / [`set_grant_write_acp(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_grant_write_acp):<br>required: **false**<br><p>Allows grantee to write the ACL for the applicable object.</p><note>  <ul>   <li>    <p>This functionality is not supported for directory buckets.</p></li>   <li>    <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>  </ul> </note><br>
          24  +
    ///   - [`if_match(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::if_match) / [`set_if_match(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_if_match):<br>required: **false**<br><p>Copies the object if the entity tag (ETag) of the destination object matches the specified tag. If the ETag values do not match, the operation returns a <code>412 Precondition Failed</code> error. If a concurrent operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should fetch the object's ETag and retry the upload.</p> <p>Expects the ETag value as a string.</p> <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p><br>
          25  +
    ///   - [`if_none_match(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::if_none_match) / [`set_if_none_match(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_if_none_match):<br>required: **false**<br><p>Copies the object only if the object key name at the destination does not already exist in the bucket specified. Otherwise, Amazon S3 returns a <code>412 Precondition Failed</code> error. If a concurrent operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should retry the upload.</p> <p>Expects the '*' (asterisk) character.</p> <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p><br>
   24     26   
    ///   - [`key(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::key) / [`set_key(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_key):<br>required: **true**<br><p>The key of the destination object.</p><br>
   25     27   
    ///   - [`metadata(impl Into<String>, impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::metadata) / [`set_metadata(Option<HashMap::<String, String>>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_metadata):<br>required: **false**<br><p>A map of metadata to store with the object in S3.</p><br>
   26     28   
    ///   - [`metadata_directive(MetadataDirective)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::metadata_directive) / [`set_metadata_directive(Option<MetadataDirective>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_metadata_directive):<br>required: **false**<br><p>Specifies whether the metadata is copied from the source object or replaced with metadata that's provided in the request. When copying an object, you can preserve all metadata (the default) or specify new metadata. If this header isn’t specified, <code>COPY</code> is the default behavior.</p> <p><b>General purpose bucket</b> - For general purpose buckets, when you grant permissions, you can use the <code>s3:x-amz-metadata-directive</code> condition key to enforce certain metadata behavior when objects are uploaded. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/amazon-s3-policy-keys.html">Amazon S3 condition key examples</a> in the <i>Amazon S3 User Guide</i>.</p><note>  <p><code>x-amz-website-redirect-location</code> is unique to each object and is not copied when using the <code>x-amz-metadata-directive</code> header. To copy the value, you must specify <code>x-amz-website-redirect-location</code> in the request header.</p> </note><br>
   27     29   
    ///   - [`tagging_directive(TaggingDirective)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::tagging_directive) / [`set_tagging_directive(Option<TaggingDirective>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_tagging_directive):<br>required: **false**<br><p>Specifies whether the object tag-set is copied from the source object or replaced with the tag-set that's provided in the request.</p> <p>The default value is <code>COPY</code>.</p><note>  <p><b>Directory buckets</b> - For directory buckets in a <code>CopyObject</code> operation, only the empty tag-set is supported. Any requests that attempt to write non-empty tags into directory buckets will receive a <code>501 Not Implemented</code> status code. When the destination bucket is a directory bucket, you will receive a <code>501 Not Implemented</code> response in any of the following situations:</p>  <ul>   <li>    <p>When you attempt to <code>COPY</code> the tag-set from an S3 source object that has non-empty tags.</p></li>   <li>    <p>When you attempt to <code>REPLACE</code> the tag-set of a source object and set a non-empty value to <code>x-amz-tagging</code>.</p></li>   <li>    <p>When you don't set the <code>x-amz-tagging-directive</code> header and the source object has non-empty tags. This is because the default value of <code>x-amz-tagging-directive</code> is <code>COPY</code>.</p></li>  </ul>  <p>Because only the empty tag-set is supported for directory buckets in a <code>CopyObject</code> operation, the following situations are allowed:</p>  <ul>   <li>    <p>When you attempt to <code>COPY</code> the tag-set from a directory bucket source object that has no tags to a general purpose bucket. It copies an empty tag-set to the destination object.</p></li>   <li>    <p>When you attempt to <code>REPLACE</code> the tag-set of a directory bucket source object and set the <code>x-amz-tagging</code> value of the directory bucket destination object to empty.</p></li>   <li>    <p>When you attempt to <code>REPLACE</code> the tag-set of a general purpose bucket source object that has non-empty tags and set the <code>x-amz-tagging</code> value of the directory bucket destination object to empty.</p></li>   <li>    <p>When you attempt to <code>REPLACE</code> the tag-set of a directory bucket source object and don't set the <code>x-amz-tagging</code> value of the directory bucket destination object. This is because the default value of <code>x-amz-tagging</code> is the empty value.</p></li>  </ul> </note><br>
   28     30   
    ///   - [`server_side_encryption(ServerSideEncryption)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::server_side_encryption) / [`set_server_side_encryption(Option<ServerSideEncryption>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_server_side_encryption):<br>required: **false**<br><p>The server-side encryption algorithm used when storing this object in Amazon S3. Unrecognized or unsupported values won’t write a destination object and will receive a <code>400 Bad Request</code> response.</p> <p>Amazon S3 automatically encrypts all new objects that are copied to an S3 bucket. When copying an object, if you don't specify encryption information in your copy request, the encryption setting of the target object is set to the default encryption configuration of the destination bucket. By default, all buckets have a base level of encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). If the destination bucket has a different default encryption configuration, Amazon S3 uses the corresponding encryption key to encrypt the target object copy.</p> <p>With server-side encryption, Amazon S3 encrypts your data as it writes your data to disks in its data centers and decrypts the data when you access it. For more information about server-side encryption, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Using Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.</p> <p><b>General purpose buckets </b></p> <ul>  <li>   <p>For general purpose buckets, there are the following supported options for server-side encryption: server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), and server-side encryption with customer-provided encryption keys (SSE-C). Amazon S3 uses the corresponding KMS key, or a customer-provided key to encrypt the target object copy.</p></li>  <li>   <p>When you perform a <code>CopyObject</code> operation, if you want to use a different type of encryption setting for the target object, you can specify appropriate encryption-related headers to encrypt the target object with an Amazon S3 managed key, a KMS key, or a customer-provided key. If the encryption setting in your request is different from the default encryption configuration of the destination bucket, the encryption setting in your request takes precedence.</p></li> </ul> <p><b>Directory buckets </b></p> <ul>  <li>   <p>For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (<code>AES256</code>) and server-side encryption with KMS keys (SSE-KMS) (<code>aws:kms</code>). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your <code>CreateSession</code> requests or <code>PUT</code> object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html">Protecting data with server-side encryption</a> in the <i>Amazon S3 User Guide</i>. For more information about the encryption overriding behaviors in directory buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html">Specifying server-side encryption with KMS for new object uploads</a>.</p></li>  <li>   <p>To encrypt new object copies to a directory bucket with SSE-KMS, we recommend you specify SSE-KMS as the directory bucket's default encryption configuration with a KMS key (specifically, a <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk">customer managed key</a>). The <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk">Amazon Web Services managed key</a> (<code>aws/s3</code>) isn't supported. Your SSE-KMS configuration can only support 1 <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk">customer managed key</a> per directory bucket for the lifetime of the bucket. After you specify a customer managed key for SSE-KMS, you can't override the customer managed key for the bucket's SSE-KMS configuration. Then, when you perform a <code>CopyObject</code> operation and want to specify server-side encryption settings for new object copies with SSE-KMS in the encryption-related request headers, you must ensure the encryption key is the same customer managed key that you specified for the directory bucket's default encryption configuration.</p></li>  <li>   <p><b>S3 access points for Amazon FSx </b> - When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side encryption option is <code>aws:fsx</code>. All Amazon FSx file systems have encryption configured by default and are encrypted at rest. Data is automatically encrypted before being written to the file system, and automatically decrypted as it is read. These processes are handled transparently by Amazon FSx.</p></li> </ul><br>
   29     31   
    ///   - [`storage_class(StorageClass)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::storage_class) / [`set_storage_class(Option<StorageClass>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_storage_class):<br>required: **false**<br><p>If the <code>x-amz-storage-class</code> header is not used, the copied object will be stored in the <code>STANDARD</code> Storage Class by default. The <code>STANDARD</code> storage class provides high durability and high availability. Depending on performance needs, you can specify a different Storage Class.</p><note>  <ul>   <li>    <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones. Unsupported storage class values won't write a destination object and will respond with the HTTP status code <code>400 Bad Request</code>.</p></li>   <li>    <p><b>Amazon S3 on Outposts </b> - S3 on Outposts only uses the <code>OUTPOSTS</code> Storage Class.</p></li>  </ul> </note> <p>You can use the <code>CopyObject</code> action to change the storage class of an object that is already stored in Amazon S3 by using the <code>x-amz-storage-class</code> header. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a> in the <i>Amazon S3 User Guide</i>.</p> <p>Before using an object as a source object for the copy operation, you must restore a copy of it if it meets any of the following conditions:</p> <ul>  <li>   <p>The storage class of the source object is <code>GLACIER</code> or <code>DEEP_ARCHIVE</code>.</p></li>  <li>   <p>The storage class of the source object is <code>INTELLIGENT_TIERING</code> and it's <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering-overview.html#intel-tiering-tier-definition">S3 Intelligent-Tiering access tier</a> is <code>Archive Access</code> or <code>Deep Archive Access</code>.</p></li> </ul> <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html">Copying Objects</a> in the <i>Amazon S3 User Guide</i>.</p><br>
   30     32   
    ///   - [`website_redirect_location(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::website_redirect_location) / [`set_website_redirect_location(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_website_redirect_location):<br>required: **false**<br><p>If the destination bucket is configured as a website, redirects requests for this object copy to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. This value is unique to each object and is not copied when using the <code>x-amz-metadata-directive</code> header. Instead, you may opt to provide this header in combination with the <code>x-amz-metadata-directive</code> header.</p><note>  <p>This functionality is not supported for directory buckets.</p> </note><br>
   31     33   
    ///   - [`sse_customer_algorithm(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::sse_customer_algorithm) / [`set_sse_customer_algorithm(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_sse_customer_algorithm):<br>required: **false**<br><p>Specifies the algorithm to use when encrypting the object (for example, <code>AES256</code>).</p> <p>When you perform a <code>CopyObject</code> operation, if you want to use a different type of encryption setting for the target object, you can specify appropriate encryption-related headers to encrypt the target object with an Amazon S3 managed key, a KMS key, or a customer-provided key. If the encryption setting in your request is different from the default encryption configuration of the destination bucket, the encryption setting in your request takes precedence.</p><note>  <p>This functionality is not supported when the destination bucket is a directory bucket.</p> </note><br>
   32     34   
    ///   - [`sse_customer_key(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::sse_customer_key) / [`set_sse_customer_key(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_sse_customer_key):<br>required: **false**<br><p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded. Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>  <p>This functionality is not supported when the destination bucket is a directory bucket.</p> </note><br>
   33     35   
    ///   - [`sse_customer_key_md5(impl Into<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::sse_customer_key_md5) / [`set_sse_customer_key_md5(Option<String>)`](crate::operation::copy_object::builders::CopyObjectFluentBuilder::set_sse_customer_key_md5):<br>required: **false**<br><p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>  <p>This functionality is not supported when the destination bucket is a directory bucket.</p> </note><br>