@@ -252,6 +252,13 @@ def start
252
252
s3_client = Aws ::S3 ::Client . new ( options )
253
253
@s3 = Aws ::S3 ::Resource . new ( client : s3_client )
254
254
255
+ if not @s3_bucket =~ /\$ \{ .*\} /
256
+ @bucket = @s3 . bucket ( @s3_bucket )
257
+ check_apikeys ( @bucket ) if @check_apikey_on_start
258
+ ensure_bucket ( @bucket ) if @check_bucket
259
+ ensure_bucket_lifecycle ( @bucket )
260
+ end
261
+
255
262
super
256
263
end
257
264
@@ -270,41 +277,36 @@ def write(chunk)
270
277
else
271
278
@time_slice_with_tz . call ( metadata . timekey )
272
279
end
273
-
280
+
274
281
bucket_name = nil
275
282
276
- if @s3_bucket . match ( /\$ \{ .*\} / )
277
-
278
- bucket_name = extract_placeholders ( @s3_bucket , chunk )
279
-
280
- if bucket_name . match ( /\$ \{ .*\} / )
281
-
282
- log . warn "Trying to use @s3_bucket_fallback as a fallback bucket name"
283
-
283
+ if @s3_bucket =~ /\$ \{ .*\} /
284
+ @s3_bucket . scan ( /\$ \{ ([^\$ \{ \} ]+)\} / ) do |placeholder |
285
+ placeholder = placeholder . join
286
+ if ( not chunk . metadata . variables ) or ( not chunk . metadata . variables . keys . include? ( placeholder . to_sym ) )
287
+ log . warn "There is no placeholder '#{ placeholder } '"
284
288
if @s3_bucket_fallback
285
-
286
289
bucket_name = @s3_bucket_fallback
287
-
290
+ log . warn "Using @s3_bucket_fallback ('#{ @s3_bucket_fallback } ') as a fallback bucket name."
291
+ break
288
292
else
289
-
290
- raise "It was possible to extract_placeholder from @s3_bucket and there is no @s3_bucket_fallback set"
291
-
293
+ raise "It was possible to extract placeholder '#{ placeholder } ' from chunk and @s3_bucket_fallback is not set."
292
294
end
293
-
295
+ end
294
296
end
295
-
296
- else
297
297
298
- bucket_name = @s3_bucket
298
+ if not bucket_name
299
+ bucket_name = extract_placeholders ( @s3_bucket , chunk )
300
+ end
299
301
302
+ bucket = @s3 . bucket ( bucket_name )
303
+ check_apikeys ( bucket ) if @check_apikey_on_start
304
+ ensure_bucket ( bucket ) if @check_bucket
305
+ ensure_bucket_lifecycle ( bucket )
306
+ else
307
+ bucket = @bucket
300
308
end
301
309
302
- bucket = @s3 . bucket ( bucket_name )
303
-
304
- check_apikeys ( bucket ) if @check_apikey_on_start
305
- ensure_bucket ( bucket ) if @check_bucket
306
- ensure_bucket_lifecycle ( bucket )
307
-
308
310
if @check_object
309
311
begin
310
312
@values_for_s3_object_chunk [ chunk . unique_id ] ||= {
@@ -465,7 +467,7 @@ def get_bucket_lifecycle_rules(bucket)
465
467
rescue Aws ::S3 ::Errors ::NoSuchLifecycleConfiguration
466
468
[ ]
467
469
end
468
- end
470
+ end
469
471
470
472
def process_s3_object_key_format
471
473
%W( %{uuid} %{uuid:random} %{uuid:hostname} %{uuid:timestamp} ) . each { |ph |
0 commit comments