@@ -87,6 +87,8 @@ def initialize
8787 config_param :aws_iam_retries , :integer , default : nil , deprecated : "Use 'instance_profile_credentials' instead"
8888 desc "S3 bucket name"
8989 config_param :s3_bucket , :string
90+ desc "Use time slice substring to rotate bucket name"
91+ config_param :s3_bucket_use_time_slice_sub , :string , default : ""
9092 desc "S3 region name"
9193 config_param :s3_region , :string , default : ENV [ "AWS_REGION" ] || "us-east-1"
9294 desc "Use 's3_region' instead"
@@ -249,13 +251,29 @@ def start
249251
250252 s3_client = Aws ::S3 ::Client . new ( options )
251253 @s3 = Aws ::S3 ::Resource . new ( client : s3_client )
254+ @s3_bucket_prefix = @s3_bucket
255+
256+ if @s3_bucket_use_time_slice_sub != ""
257+ if !@configured_time_slice_format . start_with? ( @s3_bucket_use_time_slice_sub )
258+ raise "s3_bucket_use_time_slice_sub (" + @s3_bucket_use_time_slice_sub + ") must be a substring of time_slice (" + @configured_time_slice_format + ")"
259+ end
260+ end
261+
262+ super
263+ end
264+
265+ def set_bucket
266+ if @s3_bucket_use_time_slice_sub != ""
267+ @s3_bucket = @s3_bucket_prefix + "-" + Time . new . strftime ( @s3_bucket_use_time_slice_sub )
268+ else
269+ @s3_bucket = @s3_bucket_prefix
270+ end
271+
252272 @bucket = @s3 . bucket ( @s3_bucket )
253273
254274 check_apikeys if @check_apikey_on_start
255275 ensure_bucket if @check_bucket
256276 ensure_bucket_lifecycle
257-
258- super
259277 end
260278
261279 def format ( tag , time , record )
@@ -272,6 +290,8 @@ def write(chunk)
272290 else
273291 @time_slice_with_tz . call ( metadata . timekey )
274292 end
293+
294+ set_bucket
275295
276296 if @check_object
277297 begin
0 commit comments