我正在尝试将CSV文件上传到Amazon S3。 我可以使用下面的代码片段添加元数据: s3_obj.upload_file(file_to_be_uploaded, {“content_type”: “application/octet-stream”} 如何在上传时添加合适的标签(键值对) – 例如exp: tag = { marked_to_delete: “true” } ?
我正在尝试与乘客一起运行铁轨。 我安装了AWS SDK 1和2 gem: gem ‘aws-sdk-v1’ gem ‘aws-sdk’, ‘~> 2’ 当我使用AWS sdk运行时: s3 = AWS::S3.new 我遇到错误: LoadError: dlopen(/Users/XXXX/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/nokogiri-1.6.6.2/lib/nokogiri/nokogiri.bundle, 9): Library not loaded: /usr/local/lib/liblzma.5.dylib Referenced from: /Users/XXXX/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/nokogiri-1.6.6.2/lib/nokogiri/nokogiri.bundle Reason: Incompatible library version: nokogiri.bundle requires version 8.0.0 or later, but liblzma.5.dylib provides version 6.0.0 otool -L告诉我版本是8.1.0 $ otool -L /usr/local/lib/liblzma.5.dylib /usr/local/lib/liblzma.5.dylib: /usr/local/lib/liblzma.5.dylib (compatibility version 8.0.0, current version […]
我们正在使用带有aws-sdk gem的Paperclip在我们的Rails应用程序中存储和显示图像: class User ‘, medium: ‘600×600>’, thumb: ‘200×200>’ }, default_url: ‘missing_photo.png’ end 如果我在html.erb文件中使用 ,我会得到以下HTML: <img src="https://s3.amazonaws.com//users/images/000/000/001/medium/my_image.png?1419989041″> 。 如何将https://s3.amazonaws.com/作为自定义URL(如https://example.com ? 我的域名全部设置在Cloudfront及其SSL证书中。 我查阅了Paperclip S3 Storage文档 。 有一个:url选项,但我为该选项编写的任何内容似乎都无效。
我正在切换到我编写的rails应用程序中的新aws-sdk,并且在我的生活中找不到在v2 sdk中使用相应的方法。 我也遇到访问被拒绝的问题,我无法解决。 我使用v1 sdk的方式是用户使用“uploads”命名空间密钥直接上传到s3,并且在创建他们正在处理的对象之后,回调将文件移动到longterm密钥并删除旧密钥。 这是一个例子: def move_file old_key = s3_key new_key = “#{self.class.table_name}/#{id}/#{Digest::SHA1.hexdigest([Time.now, rand].join)}/#{filename}” AWS.config(access_key_id: ENV[‘AWS_ACCESS_KEY_ID’], secret_access_key: ENV[‘AWS_SECRET_ACCESS_KEY’], region: ‘us-east-1’) s3 = AWS::S3.new bucket_name = ENV[‘AWS_S3_BUCKET’] bucket = s3.buckets[bucket_name] object = bucket.objects[old_key] begin object.move_to new_key, :acl => :public_read rescue AWS::S3::Errors::NoSuchKey errors.add(:base, “Oops! Something went wrong uploading your file. Please try again, and if the […]
我在aws-sdk-ruby的帮助下编写了一个Rails API,它从AWS检索文件并在API的响应中返回。 我可以在object.get的响应中以某种方式得到文件流,我可以直接从Rails API返回。 s3 = Aws::S3::Resource.new bucket_name = “my_bucket” bucket = s3.bucket(bucket_name) object = bucket.object(“a/b/my.pdf”) Rails.logger.info ‘Downloading file to AWS’ downloaded_data = object.get({}) send_data(downloaded_data, :filename => “my.pdf”, :type => “mime/type” ) 但它不会返回文件。 我知道的一个选项是首先使用以下行在本地保存文件: object.get(response_target: ‘/tmp/my.pdf’) 我可以返回此文件, 但有没有办法跳过此步骤并直接返回object.get的响应而不保存在本地 。 我无法使用此解决方案,因为我的URL不公开,我只是创建一个REST API。 当我尝试这个解决方案时,我得到了屏幕。
这里是ruby的新手, 我在Amazon AWS S3中有一个存储桶,其中有一个名为users.csv的文件 如何将这个文件的内容从S3存储桶加载到内存中? 我希望能够在将文件加载到内存后解析该文件的内容。 这是我的代码: require ‘aws-sdk’ s3 = Aws::S3::Resource.new(region: ‘us-west-1’) resp = s3.list_objects(bucket: ‘bucket-name’, max_keys: 1) resp.contents.each do |object| puts #{object.value} end 当我在IRB中尝试这个时,我得到: struct Aws :: S3 :: Types :: Object key =“users.csv”,last_modified = 2017-11-15 19:10:28 UTC,etag =“\”9a3d50c07aa4aa6976037ce774294a26 \“”,size = 101,storage_class =“ STANDARD“,owner = struct Aws :: S3 :: Types :: Owner […]
我们通过Ruby AWS SDK(v2)从Windows机器上传各种文件到S3。 我们已经使用Ruby 1.9进行了测试。 我们的代码工作正常,除非遇到大文件,抛出内存不足错误。 起初我们使用以下代码将整个文件读入内存: :body => IO.binread(filepath), 然后在Googling之后我们发现有很多方法可以用Ruby读取文件: :body => File.open(filepath, ‘rb’) { |io| io.read }, 但是这段代码没有解决问题,我们找不到特定的S3(或相关)示例,它显示了如何读取文件并以块的forms传递给S3。 整个文件仍然加载到内存中,并在大文件中引发内存不足错误。 我们知道我们可以将文件拆分为块并使用AWS多部件上传上传到S3,但是如果可能的话,首选是避免这种情况(尽管如果这是唯一的方法就没问题)。 我们的代码示例如下。 以块的forms读取文件,避免内存不足错误以及上传到S3的最佳方法是什么? require ‘aws-sdk’ filepath = ‘c:\path\to\some\large\file.big’ bucket = ‘s3-bucket-name’ s3key = ‘some/s3/key/file.big’ accesskeyid = ‘ACCESSKEYID’ accesskey = ‘ACCESSKEYHERE’ region = ‘aws-region-here’ s3 = Aws::S3::Client.new( :access_key_id => accesskeyid, :secret_access_key => accesskey, :region => […]
在我的rails 4应用程序中,我正在尝试下载,然后使用aws-sdk(使用gem ‘aws-sdk’, ‘~> 2′ )将常规png文件上传到我的s3存储桶。 在开发环境中,代码完全正常。 但是如果我尝试使用rails s -e production或者如果我测试了我的heroku实例上的上传,那么当我测试图像上传function时,我会收到以下错误: Seahorse::Client::NetworkingError (Connection reset by peer): app/helpers/aws_s3.rb:73:in `upload_to_s3′ app/controllers/evaluations_controller.rb:19:in `test’ 我在跟踪中提到的upload_to_s3方法如下所示: def upload_to_s3(folder_name) url = “http://sofzh.miximages.com/ruby-on-rails/WKeQQox.png” filename = “ss-” + DateTime.now.strftime(“%Y%d%m-%s”) + “-” + SecureRandom.hex(4) + “.png” full_bucket_path = Pathname(folder_name.to_s).join(filename).to_s file = save_to_tempfile(url, filename) s3 = Aws::S3::Resource.new(access_key_id: ENV[“IAM_ID”], secret_access_key: ENV[“IAM_SECRET”], region: ‘us-east-1’) s3_file = s3.bucket(ENV[“BUCKET”]).object(full_bucket_path) […]
AWS的S3 SDK for Ruby允许对文件进行客户端(“信封”)加密。 它是客户端密钥的AES CBC / ECB加密的组合,其中包络密钥和初始化向量存储在元数据中。 我有一个Ruby开发人员,它已经加密了S3存储桶中的各种文件,我需要使用Python检索和解密。 Python S3 AWS SDK目前没有此客户端function。 假设使用Ruby bucket.write S3 API的encryption_key参数加密文件: #!/usr/bin/ruby # coding: utf-8 require ‘aws-sdk’ require ‘openssl’ access_key = ” secret_access_key = ” encryption_key = “passwordpassword” s3 = AWS::S3.new storage_host = “our_bucket” storage_path = “prod/master_report/test.txt” bucket_obj = s3.buckets[storage_host].objects[storage_path] bucket_obj.write(file: ‘test.txt’, encryption_key: encryption_key) 有没有办法用Python解密文件而不是使用Ruby SDK?
我有一个AWS S3存储桶,我有多个文件夹。 s3 = AWS::S3.new bucket = s3.buckets[‘test’] bucket.exists? => true 假设我有一个名为demo/index.html的资源,我将如何检查此资源中是否存在此资源? 可能是我的问题太简单了,但我无法为此找到合适的答案。 任何帮助表示赞赏。