There are different tiers in S3 with different pricing, see https://aws.amazon.com/s3/storage-classes/  

By default, objects in S3 are created with the default Standard tier.

> It is possible to create a policy on the bucket to move them to Intelligent Tiering after 30 days, however we found with other projects that we can save quite a lot by creating them in the Intelligent Tier. The only way to do that is set the storage class when creating the object (a lifecycle policy only allows to change it after 30 days), which we don’t have control over.
> It’s a simple change in the PutObjectRequest that could be exposed via configuration of the S3 disk settings, and default to Standard

See [`SetStorageClass`](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_s3_1_1_model_1_1_put_object_request.html#a6cf76adbf31f1ee08ca20d7c8bb8459a)

And
https://github.com/ClickHouse/ClickHouse/blob/ce56ae61c68e23512cc8ec3bfe72f5c935f12379/src/IO/WriteBufferFromS3.cpp#L468




if (!upload_part_size_multiply_factor)
        throw Exception(
            ErrorCodes::INVALID_SETTING_VALUE,
            "Setting upload_part_size_multiply_factor cannot be zero",
            upload_part_size_multiply_factor);
    if (!upload_part_size_multiply_parts_count_threshold)
        throw Exception(
            ErrorCodes::INVALID_SETTING_VALUE,
            "Setting upload_part_size_multiply_parts_count_threshold cannot be zero",
            upload_part_size_multiply_parts_count_threshold);
    if (!max_part_number)
        throw Exception(
            ErrorCodes::INVALID_SETTING_VALUE,
            "Setting max_part_number cannot be zero",
            max_part_number);
    static constexpr size_t max_part_number_limit = 10000;
    if (max_part_number > max_part_number_limit)
        throw Exception(
            ErrorCodes::INVALID_SETTING_VALUE,
            "Setting max_part_number has invalid value {} which is grater than the s3 API limit {}",
            ReadableSize(max_part_number), ReadableSize(max_part_number_limit));
    size_t maybe_overflow;
    if (common::mulOverflow(max_upload_part_size, upload_part_size_multiply_factor, maybe_overflow))
        throw Exception(
            ErrorCodes::INVALID_SETTING_VALUE,
            "Setting upload_part_size_multiply_factor is too big ({}). Multiplication to max_upload_part_size ({}) will cause integer overflow",
            ReadableSize(max_part_number), ReadableSize(max_part_number_limit));
    
}
S3Settings::RequestSettings::RequestSettings(const Settings & settings)