Class: Kurosawa::Filesystems::S3
- Defined in:
- lib/kurosawa/filesystems/s3.rb
Instance Method Summary collapse
- #cleanup! ⇒ Object
- #del(key) ⇒ Object
- #exists(key) ⇒ Object
- #get(key) ⇒ Object
-
#initialize(access_key_id:, secret_access_key:, region:, endpoint:, bucket:, force_path_style: false) ⇒ S3
constructor
A new instance of S3.
- #ls(prefix) ⇒ Object
- #put(key, value) ⇒ Object
Constructor Details
#initialize(access_key_id:, secret_access_key:, region:, endpoint:, bucket:, force_path_style: false) ⇒ S3
Returns a new instance of S3.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/kurosawa/filesystems/s3.rb', line 8 def initialize(access_key_id:,secret_access_key:,region:,endpoint:,bucket:,force_path_style:false) = { :access_key_id => URI.encode(access_key_id), :secret_access_key => URI.decode(secret_access_key), :region => region, :force_path_style => force_path_style } [:endpoint] = endpoint if endpoint @s3 = Aws::S3::Client.new() @bucket_name = bucket @bucket = Aws::S3::Bucket.new(bucket, client: @s3) end |
Instance Method Details
#cleanup! ⇒ Object
69 70 |
# File 'lib/kurosawa/filesystems/s3.rb', line 69 def cleanup! end |
#del(key) ⇒ Object
57 58 59 60 61 |
# File 'lib/kurosawa/filesystems/s3.rb', line 57 def del(key) key.gsub!(/^\/+/, "") puts "s3:del #{key}" @s3.delete_object(bucket: @bucket_name, key: key) end |
#exists(key) ⇒ Object
63 64 65 66 67 |
# File 'lib/kurosawa/filesystems/s3.rb', line 63 def exists(key) key.gsub!(/^\/+/, "") puts "s3:exists #{key}" @bucket.objects[key].exists? end |
#get(key) ⇒ Object
44 45 46 47 48 49 |
# File 'lib/kurosawa/filesystems/s3.rb', line 44 def get(key) key.gsub!(/^\/+/, "") puts "s3:get #{key}" resp = @s3.get_object(bucket: @bucket_name, key: key) resp.body.read end |
#ls(prefix) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/kurosawa/filesystems/s3.rb', line 23 def ls(prefix) prefix.gsub!(/^\/+/, "") puts "s3:ls #{prefix}" result = [] next_marker = nil loop do = { bucket: @bucket_name, marker: next_marker } [:prefix] = prefix if prefix.length != 0 resp = @s3.list_objects(); result += resp.contents.map { |x| "/#{x.key}" } break if resp.next_marker == nil next_marker = resp.next_marker end result end |
#put(key, value) ⇒ Object
51 52 53 54 55 |
# File 'lib/kurosawa/filesystems/s3.rb', line 51 def put(key, value) key.gsub!(/^\/+/, "") puts "s3:put #{key}" @s3.put_object(bucket: @bucket_name, key: key, body: value) end |