0

當我嘗試上傳到s3時出現此錯誤。我檢查了一下,以確保我的新聞憑據是正確的。這是我得到的錯誤。當使用carrierwave/fog上傳到aws時,所有對此對象的訪問都被禁用s3

```

Excon::Errors:`:Forbidden: Expected(200) <=> Actual(403 Forbidden) 
excon.error.response 
    :body   => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AllAccessDisabled</Code><Message>All access to this object has been disabled</Message><RequestId></RequestId><HostId></HostId></Error>" 
    :cookies  => [ 
    ] 
    :headers  => { 
    "Connection"  => "close" 
    "Content-Type"  => "application/xml" 
    "Date"    => "Fri, 13 May 2016 22:14:48 GMT" 
    "Server"   => "AmazonS3" 
    "x-amz-id-2"  => "" 
    "x-amz-request-id" => "" 
    } 
    :host   => "s3.amazonaws.com" 
    :local_address => "10.0.0.24" 
    :local_port => 57133 
    :path   => "/uploads/script/file/1/Facebook-2006.jpg" 
    :port   => 443 
    :reason_phrase => "Forbidden" 
    :remote_ip  => "54.231.114.148" 
    :status  => 403 
    :status_line => "HTTP/1.1 403 Forbidden\r\n" 

```

這就是我如何配置carrierwave /霧 配置/初始化/ carrierwave.rb CarrierWave.configure do |config| config.fog_credentials = { provider: "AWS", aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"], aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"] } config.fog_directory = ENV["AWS_S3_BUCKET"] end

回答

6

白癡移動。我設置了錯誤的桶名稱。我編寫了ENV [「AWS_S3_BUCKET」]而不是ENV ['S3_BUCKET_NAME']。這是說拒絕訪問可能是因爲它試圖訪問不存在的存儲桶或是s3的根。

+0

超容易犯的錯誤,很高興你能夠解決它。 – geemus

+0

我做了一個類似的錯誤,我命名了一個不存在的桶...... – phoenix

+0

哈哈哈好東西有這​​個錯誤的問題。我犯了錯誤的桶名稱相同的錯誤。該消息應該更具信息性。 –

0

是否桶中有公共訪問權限?如果存在,您可以嘗試在霧配置中設置桶的AWS區域?

+0

我給每個行動的'每個人'的權限來測試它,但它仍然給出同樣的錯誤。我也嘗試將該區域設置爲我們東1,因爲水桶符合美國標準,沒有運氣。 –

+0

啊,我是個白癡。我爲我的環境變量使用了錯誤的名稱。我在說ENV ['S3_BUCKET_NAME']而不是ENV ['BUCKET_NAME_S3']。謝謝您的幫助! –