Tag: 亚马逊 s3

使用Rails和Paperclip设置存储桶名称的域名样式(bucket.s3.amazonaws.com)

关于url选项的Paperclip doc: 您可以选择将存储桶的名称放置为域样式(bucket.s3.amazonaws.com)或路径样式(s3.amazonaws.com/bucket)。 看起来设置实际上将桶的名称放置为域式? 我不能强制回形针生成像bucket.s3.amazonaws.com而不是s3.amazonaws.com/bucket这样的url。

Rails 4,Paperclip,Amazon S3配置Amazon Path

我正在尝试配置当我的对象成功上传到Amazon的S3服务时从回形针返回的端点。 上传和一切正常,但返回的URL不正确,无法显示上传。 现在,返回的url是http://s3.amazonaws.com/path/to/my/items (如下图所示)。 而不是s3.amazonaws.com ,我希望根特定于桶的位置(例如s3-us-west-1.amazonaws.com/path/to/my/items ) 我应该在哪里尝试配置不同的URL路径(从s3.amazonaws.com到其他地方)? 我试图将带有上述路径的url添加到我的配置文件中,如: #Paperclip Amazon S3 config.paperclip_defaults = { :storage => :s3, :url => “https://s3-us-west-1.amazonaws.com/”, :s3_credentials => { :bucket => ENV[‘S3_BUCKET_NAME’], :access_key_id => ENV[‘AWS_ACCESS_KEY_ID’], :secret_access_key => ENV[‘AWS_SECRET_ACCESS_KEY’] } } 哪个似乎没有任何影响。 请告知我应该在哪里设置此选项! 提前致谢!

如何为Carrierwave分配远程文件?

我有以下定义的video模型: class Video require ‘carrierwave/orm/activerecord’ mount_uploader :attachment, VideoUploader mount_uploader :attachment_thumbnail, VideoThumbnailUploader … end 当我上传video文件时。 它还将文件发送到我们的编码服务Zencoder,Zencoder对video文件进行编码并为其创建缩略图。 通常情况下,我可以执行类似@ video.attachment.url的操作,它将返回video文件的路径。 我想用缩略图做同样的事情。 即@ video.attachment_thumbnail.url 但是,由于附件是由我们的编码服务创建的,该服务还将其上载到指定的S3存储桶。 如何将附件分配给记录的attachment_thumbnail列? 我可以简单地做一些事情: @video.update_attributes( :attachment_thumbnail => ‘https://bucket_name.s3.amazonaws.com/uploads/users/1/video/1/thumb.png’ ) 是否可以将这样的文件分配给Carrierwave?

AWS_S3 ruby​​ gem超时错误执行已过期

我正在使用ffmpeg处理一些video,然后使用aws_s3 gem将video发送到S3。 我使用以下代码: S3Object.store(“testme.mp4”, open(file), ‘blah’, :access => :public_read) 一切都很好但有1GB及以上的文件我收到以下错误: “Timeout::Error: execution expired”. 这只发生在ffmpeg处理完文件之后。 如果我自己发送文件而不进行处理,那么一切都很好。 有没有人遇到类似的问题? 谢谢, SLothistype

AWS S3 Ruby url_for响应标头(自定义文件名和文件类型)

我只是想知道这是一个错误,我的错误或任何人设法让这个工作 >irb >require ‘aws/s3′ >AWS::S3::Base.establish_connection!( :access_key_id => key, :secret_access_key => secret) >AWS::S3::S3Object.url_for( filename, bucket, :use_ssl => true, :response_content_type=>’text/plain’, :response-content-disposition=>’attachment; filename=text.txt’ ) 这会吐出一个签名的url 我可以从中获取一个URL但是:response_content_type & :response-content-disposition选项似乎根本不做任何事情。 这些记录在http://docs.amazonwebservices.com/AWSRubySDK/latest/AWS/S3/S3Object.html#url_for-instance_method 有没有人有幸为每个请求标题添加这些? 或者我做错了吗? 编辑我明白了:如果有人遇到同样的问题 – 需要正确的gem而不是’aws / s3’它的’aws-sdk’(有两个漂浮在那里的代码几乎相同 – 我认为后者是一个旧版)

在url_for中使用到期时,Amazon S3无效日期

我在Amazon s3存储桶中创建了一个文档。 然后我尝试创建一个已签名的URL,该桶将在几年后到期,如下所示: s3 = AWS::S3.new(:access_key_id => S3Config.access_key_id, :secret_access_key => S3Config.secret_access_key) bucket = s3.buckets[S3Config.bucket] bucket.objects[s3_key].url_for(:read, :expires => Time.at(Time.utc(2019,12,30)).to_i) 但是当我导航到签名的URL时,我收到以下错误消息: Invalid date (should be seconds since epoch) 但是根据Time.at的ruby文档和我对时代的理解,这应该有用 ……我做错了什么?

使用Ruby在S3中重命名对象

我想使用Ruby sdk重命名s3中的项目。 我该怎么做呢? 我试过了: require ‘aws-sdk’ s3 = AWS.config( :region => ‘region’, :access_key_id => ‘key’, :secret_access_key => ‘key’ ) b = AWS::S3::Bucket.new(client: s3, name: ‘taxalli’) b.objects.each do |obj| obj.rename_to(‘imports/files/’ + line.split(‘ ‘).last.split(‘/’).last) end 但我没有在新的sdk中看到任何移动或重命名的内容。

有没有办法使用ruby gem aws-s3从s3下载文件?

好的,所以我尝试了两种方法都失败了 使用aws-s3 gem的第一种方法 require ‘aws/s3’ S3ID = “MYACCESS” S3KEY = “MYKEY” include AWS::S3 AWS::S3::Base.establish_connection!( :access_key_id => S3ID, :secret_access_key => S3KEY ) bucket = AWS::S3::Bucket.find(“test_bucket”) => #”http://s3.amazonaws.com/doc/2006-03-01/”, “name”=>”test_bucket”, “prefix”=>nil, “marker”=>nil, “max_keys”=>1000, “is_truncated”=>true}, @object_cache=[#, #, # 1000 bucket.objects[0] => # bucket.objects[1] => # bucket.objects[1].key => “00000188110119_1000000731213/10_08-52-08.mp3” File.open(“/Users/matt/local_copy.mp3”, “w”) do |f| f.write(bucket.objects[1]) end UPDATE bucket.objects[1] => # bucket.objects[1].read […]

如何使用雾来编辑s3上的文件?

我在s3上有一堆文件。 我使用.fog配置文件设置了fog ,因此我可以启动fog并获得提示。 现在,如果我知道它的路径,如何在s3上访问和编辑文件?

Aws :: S3 :: Presigner未定义的nil方法凭证:Ruby中的NilClass

我使用aws-sdk-core gem我在获取url表单时遇到错误以下是我的代码 def initialize(bucket:, region:) @bucket = bucket client = Aws::S3::Client.new(region: region) @signer = Aws::S3::Presigner.new(client: client) end def sign(key, expires_in: 3600) @signer.presigned_url(:get_object, bucket: @bucket, key: key, expires_in: expires_in) end 我收到了错误 NoMethodError – undefined method `credentials’ for nil:NilClass: aws-sdk-core (2.1.15) lib/aws-sdk-core/signers/v4.rb:24:in `initialize’ aws-sdk-core (2.1.15) lib/aws-sdk-core/s3/presigner.rb:88:in `block in sign_but_dont_send’ 如果有人知道如何获得预先签名的url,请让我们知道 谢谢