Configurare Amazon S3 con Paperclip
Come si configura l’integrazione tra Amazon S3 e Paperclip?
Amazon S3 è il servizio di hosting dei file che fa pagare i propri servigi a “consumo” invece che ad un prezzo fisso.
Nella maggiorparte dei casi il sistema è abbastanza conveniente sopratutto per i progetti piccoli non mi è mai capitato di spendere cifre importanti anzi mi ha spesso stupito la quasi gratuità del servizio.
La configurazione con Rails - Paperclip purtroppo non è immediata e semplice.
Trovo in particolare il pannello di configurazione di Amazon molto confusionario e pieno di opzioni per lo più inutili per il mio utilizzo.
Inoltre la configurazione tramite Rails non è per nulla agevole e ho dovuto fare diverse prove e leggere numerosi articoli.
Questi appunti rappresentano il mio attuale flusso di lavoro per configurare Amazon S3 con la gemma Paperlcip.
Paperclip per chi non lo conoscesse è la più famosa gemma per l’integrazione e il caricamento di immagini.
La configurazione di integrazione tra la gemma Paperclip e Amazon S3 l’ho divisa in due macro spezzoni.
Il primo riguarda la configurazione di Amazon S3 e il secondo riguarda la configurazione specifica per Rails.
Configurazione Amazon S3:
- Creare un bucket su amazon s3 attraverso il pannello apposito.
- Creare un identità IAM che ti darà:
- un identificativo (access_key_id)
- un segreto (secret_access_id)
-
Aggiungere una configurazione specifica per i percorsi delle immagini relative al posizionamento in Europa
Configurazione Rails:
-
Aggiungere nel Gemfile:
gem ‘aws-sdk’, ‘~> 2.3.0’
-
Inserire in development e/o production la seguente configurazione:
-
Ovviamente è necessario impostare i segreti tramite il tool di Rails5 tramite
EDITOR=vi rails secrets:edit
-
Per poter far si che in development si possano leggere i valori che utilizza rails secrets ricorda di impostare questa regola:
config.read_encrypted_secrets = true
-
In produzione (ad esempio su heroku) è necessario ricordarsi anche di impostare la variabile per la lettura dei secrets. La variabile:
ENV[“RAILS_MASTER_KEY”]
Fonti:
- https://devcenter.heroku.com/articles/paperclip-s3
- http://www.starkandwayne.com/blog/rails-5-1-applications-can-be-a-lot-more-secretive-on-cloud-foundry-and-heroku/