0

Ich habe seit Stunden daran gearbeitet und konnte es nicht herausfinden. Ich habe git sauber gemacht und dann gemerkt, dass meine S3.yml Datei gelöscht wurde. Ich habe neue Schlüssel erstellt und sie in eine neue s3.yml-Datei geschrieben. Ich habe nichts anderes geändert als vorher, was gut geklappt hat. Was vermisse ich?Aws :: Fehler :: MissingCredentialsError in PostsController # Update mit Paperclip und AWS

Ich erhalte: Aws::Errors::MissingCredentialsError (unable to sign request without credentials set):

Hier ist mein Code:

development.rb

config.paperclip_defaults = { 
    storage: :s3, 
    s3_region: 'us-east-1', 
    bucket:'mybucket', 
    s3_credentials: "#{Rails.root}/config/s3.yml" 
    } 

production.rb

config.paperclip_defaults = { 
     storage: :s3, 
     s3_credentials: { 
     bucket: ENV.fetch('S3_BUCKET_NAME'), 
     access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'), 
     secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'), 
     s3_region: ENV.fetch('AWS_REGION'), 
     } 
    } 
    # Secret key base for non-existent secrets.yml file 
    config.secret_key_base = ENV["SECRET_KEY_BASE"] 

s3.yml (mit neuem Zugang Schlüssel)

S3_BUCKET_NAME: mybucket 
AWS_ACCESS_KEY_ID: *** 
AWS_SECRET_ACCESS_KEY: *** 
AWS_REGION: us-east-1 

Beitrag Klasse

class Post < ApplicationRecord 
    belongs_to :user, counter_cache: true 
    belongs_to :category 

    validates :title, :presence => true 
    validates :content, :presence => true 

    has_attached_file :thumbnail, styles: { 
     medium: '270x170#', 
     large: '560x280#', 
     large2: '540x340#' 
    } 

    # Validate the attached image is image/jpg, image/png, etc 
    validates_attachment_content_type :thumbnail, :content_type => /\Aimage\/.*\Z/ 
end 
+0

Welche Umgebung gibt Ihnen diesen Fehler? Dev oder Prod? – TheOni

+0

@TheOni Entwicklung – Mia

Antwort

1

Wie Sie den Fehler auf dev Umgebung werden immer ich denke, dass der Fehler auf s3_credentials Ursachen zurückzuführen ist: "# {} Rails.root /config/s3.yml".

Angesichts der S3.MYL, die Sie geschrieben haben, glaube ich nicht, dass s3_Credentials wird mit einer JSON-Struktur wie die, die Sie in der Produktionsumgebung haben gefüllt werden.

Ich empfehle Ihnen, die Datei zu laden und füllen Sie die JSON wie in Ihrer Produktionsumgebung.

+0

Ich denke, das war das Problem, aber wenn ich es zu dem, was ich in der Produktion habe, habe ich 'holen ': Schlüssel nicht gefunden:" S3_BUCKET_NAME ". – Mia

+0

Ich habe es herausgefunden! Vielen Dank, dass Sie mich in die richtige Richtung weisen! :)) Ich musste den ENV-Variablen im Terminal Werte hinzufügen: export ENV_VARIABLE_NAME = "value" – Mia

Verwandte Themen