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




try
        {
            fillPutRequest(put_object_task->req);
            schedule([this, task_notify_finish]()
            {
                try
                {
                    processPutRequest(*put_object_task);
                }
                catch (...)
                {
                    put_object_task->exception = std::current_exception();
                }
                task_notify_finish();
            }, 0);
        }
        catch (...)
        {
            task_notify_finish();
            throw;
        }
    }
    else
    {
        PutObjectTask task;
        fillPutRequest(task.req);
        processPutRequest(task);
    }
}
void WriteBufferFromS3::fillPutRequest(Aws::S3::Model::PutObjectRequest & req)