Quando provo a caricare un'immagine su un oggetto "Car", mi viene negato l'accesso a S3. Ma le immagini del sito che si trovano nel . cartella di beni hanno mostrato più che bene da quando ho aggiunto S3 L'errore specifico che ottengo è questo:.Excon :: Errori :: Vietato (Previsto (200) <=> Actual (403 Forbidden)
2015-02-17T14:40:48.459629+00:00 app[web.1]: Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)
2015-02-17T14:40:48.459630+00:00 app[web.1]: excon.error.response
2015-02-17T14:40:48.459635+00:00 app[web.1]: "Connection" => "close"
2015-02-17T14:40:48.459637+00:00 app[web.1]: "Content-Type" => "application/xml"
2015-02-17T14:40:48.459639+00:00 app[web.1]: "Date" => "Tue, 17 Feb 2015 14:40:48 GMT"
2015-02-17T14:40:48.459640+00:00 app[web.1]: "Server" => "AmazonS3"
2015-02-17T14:40:48.459632+00:00 app[web.1]: :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>2CE306ACD51F02A1</RequestId><HostId>tKLXUAKxyDFTMExl7kE+AuVVsEJOFqXh983li6N7R2UlYDXv1Z3GJRvW5zy1XIXVs2zArp310vg=</HostId></Error>"
2015-02-17T14:40:48.459642+00:00 app[web.1]: "x-amz-id-2" => ""part of secret key"="
Con "parte della chiave segreta" ovviamente redatta ho provato la creazione di un altro utente e l'utilizzo di nuove chiavi, ma non ha funzionato. Non è possibile andare da qui.
app/uploader/picture_uploader
class PictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process resize_to_limit: [400, 400]
if Rails.env.production?
storage :fog
else
storage :file
end
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# Add a white list of extensions which are allowed to be uploaded.
def extension_white_list
%w(jpg jpeg gif png)
end
end
carrier_wave.rb
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
# Configuration for Amazon S3
:provider => 'AWS',
:aws_access_key_id => ENV['S3_ACCESS_KEY'],
:aws_secret_access_key => ENV['S3_SECRET_KEY']
}
config.fog_directory = ENV['S3_BUCKET']
end
end
Credo che sia tutti i file rilevanti, fatemi sapere se c'è altro da vedere. Non sono sicuro che la specifica di una regione o di un utente esperto possa essere d'aiuto, non sembra come sarebbe.
Impressionante, grazie per questa soluzione! I documenti AWS sul loro sistema rinnovato sono stati difficili da navigare. – Jadam
Vorrei poterti dare più di un upvote su questo. Ho letteralmente speso 4 ore cercando di farlo funzionare. È difficile credere che S3 sia così complicato, difficile da configurare e scarsamente documentato. – IAmNaN
Quindi, se seguiamo questo e generiamo un utente in amazon ... ora abbiamo 2 set di chiavi di accesso/segreto (uno generico per il tuo account AWS quando accedi alle tue "credenziali di sicurezza" -> Access Keys (ID della chiave di accesso e Secret Access Key) ... poi un altro per ogni utente che hai configurato in 'Utenti' come viene usato nei passaggi precedenti. Quale set di chiavi utilizziamo nel terminale quando esegui 'heroku config: imposta AWS_ACCESS_KEY_ID = e heroku config : set AWS_SECRET_ACCESS_ID = '??? – BB500