S3 :: Error :: SignatureDoesNotMatch:当我尝试保存一个新对象时

时间:2010-08-20 20:19:31

标签: ruby-on-rails ruby amazon-s3

这是我的保存,而不是当我尝试登录时。这是我的代码:

service = S3::Service.new(
    :access_key_id     => S3_ACCESS_KEY,
    :secret_access_key => S3_SECRET
  )
puts "connection established with s3"

puts "finding bucket"
bucket = service.buckets.find("")
puts "building object"
object = bucket.objects.build("#{RAILS_ROOT}/jsonexport/ema.txt")
puts "saving object"
object.content = open("#{RAILS_ROOT}/export/ema.txt")
object.save

我可以在控制台中运行所有这些代码,直到我找到object.save然后它就会出现这个错误:

S3::Error::SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your key and signing method.
from /usr/local/lib/ruby/gems/1.8/gems/s3-0.3.0/lib/s3/connection.rb:209:in `handle_response'
from /usr/local/lib/ruby/gems/1.8/gems/s3-0.3.0/lib/s3/connection.rb:196:in `send_request'
from /usr/local/lib/ruby/gems/1.8/gems/s3-0.3.0/lib/s3/connection.rb:72:in `request'
from /usr/local/lib/ruby/gems/1.8/gems/s3-0.3.0/lib/s3/service.rb:64:in `service_request'
from /usr/local/lib/ruby/gems/1.8/gems/s3-0.3.0/lib/s3/bucket.rb:146:in `bucket_request'
from /usr/local/lib/ruby/gems/1.8/gems/s3-0.3.0/lib/s3/object.rb:196:in `object_request'
from /usr/local/lib/ruby/gems/1.8/gems/s3-0.3.0/lib/s3/object.rb:179:in `put_object'
from /usr/local/lib/ruby/gems/1.8/gems/s3-0.3.0/lib/s3/object.rb:74:in `save'
from (irb):8

有没有人有任何建议或想法?

1 个答案:

答案 0 :(得分:0)

嗯......这很有用。

    service = S3::Service.new(
    :access_key_id     => S3_ACCESS_KEY,
    :secret_access_key => S3_SECRET
  )
puts "connection established with s3"

puts "finding bucket"
bucket = service.buckets.find("euro")

puts "building ema"
object = bucket.objects.build("jsonexport/ema.json")
puts "saving ema"
object.content = open("jsonexport/ema.json")
object.save