@@ -28,19 +28,20 @@ def _reduce_method(m):
2828class S3 (Task ):
2929 def __init__ (self , manager , config , timer , base_dir , backup_dir , ** kwargs ):
3030 super (S3 , self ).__init__ (self .__class__ .__name__ , manager , config , timer , base_dir , backup_dir , ** kwargs )
31- self .remove_uploaded = self .config .upload .remove_uploaded
32- self .retries = self .config .upload .retries
33- self .thread_count = self .config .upload .threads
34- self .region = self .config .upload .s3 .region
35- self .bucket_name = self .config .upload .s3 .bucket_name
36- self .bucket_prefix = self .config .upload .s3 .bucket_prefix
37- self .access_key = self .config .upload .s3 .access_key
38- self .secret_key = self .config .upload .s3 .secret_key
39- self .chunk_size_mb = self .config .upload .s3 .chunk_size_mb
40- self .chunk_size = self .chunk_size_mb * 1024 * 1024
41- self .secure = self .config .upload .s3 .secure
42- self .s3_acl = self .config .upload .s3 .acl
43- self .key_prefix = base_dir
31+ self .remove_uploaded = self .config .upload .remove_uploaded
32+ self .retries = self .config .upload .retries
33+ self .thread_count = self .config .upload .threads
34+ self .region = self .config .upload .s3 .region
35+ self .bucket_name = self .config .upload .s3 .bucket_name
36+ self .bucket_prefix = self .config .upload .s3 .bucket_prefix
37+ self .bucket_explicit_key = self .config .upload .s3 .bucket_explicit_key
38+ self .access_key = self .config .upload .s3 .access_key
39+ self .secret_key = self .config .upload .s3 .secret_key
40+ self .chunk_size_mb = self .config .upload .s3 .chunk_size_mb
41+ self .chunk_size = self .chunk_size_mb * 1024 * 1024
42+ self .secure = self .config .upload .s3 .secure
43+ self .s3_acl = self .config .upload .s3 .acl
44+ self .key_prefix = base_dir
4445
4546 self ._pool = None
4647 self ._multipart = None
@@ -67,10 +68,13 @@ def run(self):
6768 file_size = os .stat (file_path ).st_size
6869 chunk_count = int (ceil (file_size / float (self .chunk_size )))
6970
70- if self .bucket_prefix == "/" :
71- key_name = "/%s/%s" % ( self .key_prefix , file_name )
71+ if self .bucket_explicit_key :
72+ key_name = self .bucket_explicit_key
7273 else :
73- key_name = "%s/%s/%s" % (self .bucket_prefix , self .key_prefix , file_name )
74+ if self .bucket_prefix == "/" :
75+ key_name = "/%s/%s" % (self .key_prefix , file_name )
76+ else :
77+ key_name = "%s/%s/%s" % (self .bucket_prefix , self .key_prefix , file_name )
7478
7579 logging .info ("Starting multipart AWS S3 upload to key: %s%s using %i threads, %imb chunks, %i retries" % (
7680 self .bucket_name ,
0 commit comments