无法在欧盟地区创建s3存储桶

时间:2011-01-19 11:07:06

标签: ruby amazon-s3

body = "<CreateBucketConfiguration><LocationConstraint>EU</LocationConstraint></CreateBucketConfiguration>"

        content_length = body.bytesize
        content_type = "text/plain"

        url = URI.parse("http://#{@name}.s3.amazonaws.com/")

        req = Net::HTTP::Put.new(url.path)
        req.body = body
        req.add_field 'Date' , @time
        req.add_field 'Host', "#{@name}.s3.amazonaws.com"
        req.add_field 'Content-Type', "#{content_type}"
        req.add_field 'Authorization', "#{signature}"
        req.add_field 'Content-Length', "#{content_length}"

        response = Net::HTTP.new(url.host, url.port).start do |http|
          http.request(req)
        end

        puts response.read_body

返回200并创建存储桶,但在美国标准而非欧盟。我在这里错过了什么?谢谢你的帮助。


以下是整个对话

PUT / HTTP/1.1    
Accept: */*    
User-Agent: Ruby    
Date: Wed, 19 Jan 2011 22:14:31 -0800    
Host: mytest.s3.amazonaws.com    
Content-Type: text/plain    
Authorization: AWS AC8RVKAXAU8Q:41uTqvfncc2mE561YabgpGUouio=    

Content-Length: 146  

<CreateBucketConfiguration xmlns='http://s3.amazonaws.com/doc/2006-03-01/'>
    <LocationConstraint>EU</LocationConstraint>
</CreateBucketConfiguration>

HTTP/1.1 200 OK    
x-amz-id-2: lrlPt8Y19ZxFXPbZf9Gf6dYxTGLYkkMzo0tSNXCNk29o9xghcob502mcttQ/oo4W    
x-amz-request-id: 3504CCA0E7AFFE95    
Date: Thu, 20 Jan 2011 06:14:32 GMT    
Location: /mytest    
Content-Length: 0    
Server: AmazonS3   

HTTP/1.1 400 Bad Request    
Transfer-Encoding: chunked    
Date: Thu, 20 Jan 2011 06:14:32 GMT    
Connection: close    
Server: AmazonS3  

0

1 个答案:

答案 0 :(得分:0)

我唯一能看到的是你没有在请求正文中包含xmlns - 不确定这是否会有所不同。

xmlns="http://s3.amazonaws.com/doc/2006-03-01/"

body = "<CreateBucketConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><LocationConstraint>EU</LocationConstraint></CreateBucketConfiguration>"