window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = finestra if (w.LeadBooster) { console.warn('LeadBooster esiste già') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() SVILUPPO GRATUITO CON AWS S3 E PAPERCLIP - The Codest
The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2016-09-30
Sviluppo di software

SVILUPPO GRATUITO CON AWS S3 E PAPERCLIP

Bartosz Zurkowski

Negli ultimi anni, lo storage online è diventato mainstream, fornendo architetture altamente scalabili, maggiore sicurezza e ampia accessibilità ai dati. Uno dei servizi di archiviazione più popolari è il Simple Storage Service di Amazons, noto come S3.

Amazon S3 è un servizio estremamente potente al centro di Amazon Web Services. Tuttavia, al di fuori dell'ambiente di produzione, S3 può essere difficile da utilizzare. Si tratta di passare le chiavi di accesso, di fornire gli account utente e di mantenere una connessione di rete affidabile, per non parlare dei costi. Per fortuna esiste uno strumento che aiuta a risolvere questo problema. FakeS3 è un server leggero che simula il comportamento del vero S3. Risponde alle stesse chiamate a cui risponde Amazon S3 e memorizza i file caricati nel vostro filesystem locale, senza che vengano effettuate richieste al servizio di Amazon. Sebbene gem non supporti l'intero set di comandi di S3, l'API implementata è sufficiente per la maggior parte dei casi di utilizzo delle applicazioni.

In questo articolo presenterò l'approccio di integrazione di AWS e FakeS3 con Paperclip, la popolare libreria di file allegati per Active Record. Paperclip e S3 insieme forniscono un efficace sistema di archiviazione dei file che combina le utili funzionalità di base di Paperclip (come la gestione delle convalide e le trasformazioni delle immagini) con i vantaggi dell'archiviazione online. Sebbene la configurazione di questi strumenti non sia ovvia e richieda una documentazione dettagliata e la risoluzione di molti problemi specifici della gemma, vale la pena spendere un po' di tempo per rendere lo sviluppo più veloce ed efficiente.

Qual è il nostro obiettivo?

L'integrazione degli strumenti descritti richiede tre fasi:

  1. Avvio del fakeserver S3 fornito dalla gemma FakeS3 in background.
  2. Configurazione del client AWS S3 per delegare tutte le richieste al fakeserver lanciato.
  3. Configurazione di Paperclip per utilizzare il falso endpoint S3 negli URL delle risorse costruite.

Installazione

Iniziamo installando le gemme necessarie:

# Profilo della gemma

gemma "paperclip"
gemma "aws-sdk", "~> 1.6"

gemma "fakes3", gruppo: [:development, :test]

Assicurarsi di installare la versione 1.6 di aws-sdk. Paperclip, che utilizza SKD per gestire lo storage nel servizio di Amazon, non funziona bene con le versioni superiori di questa gemma. Ciò è dovuto a cambiamenti significativi nell'API dell'SDK apportati con la versione 2.0.

Ricordare inoltre che l'obiettivo principale di FakeS3 è quello di ridurre al minimo le dipendenze di runtime. Si tratta più che altro di uno strumento di sviluppo per testare le chiamate S3 nel vostro codice piuttosto che un server di produzione che vuole duplicare le funzionalità di S3. Pertanto, si dovrebbe includere la gemma solo nel gruppo di sviluppo e di test.

Configurazione AWS

L'SDK di AWS fornisce un metodo di aiuto dedicato al caricamento della configurazione. Per impostazione predefinita, carica la configurazione da config/aws.yml, estrarre i suoi parametri per l'ambiente corrente e passarli al client AWS. Innanzitutto, chiamare il metodo seguente in un inizializzatore:

# config/initializers/aws.rb

AWS::Rails.load_yaml_config

Ora che il file di configurazione è stato caricato correttamente, possiamo procedere a specificarne il contenuto:

# config/aws.yml

sviluppo: &sviluppo
    access_key_id: "abc"
    secret_access_key: "abc"
    s3_endpoint: "localhost
    s3_port: 10001
    s3_force_path_style: true
    use_ssl: false

test: *sviluppo

Analizziamo tutti i parametri uno per uno:

  • ID_chiave_di_accesso, chiave_di_accesso_segreta - Credenziali del client AWS necessarie per accedere all'account Amazon. Sono ignorate dal falso server S3, quindi valori personalizzati in ambienti sandbox.
  • s3_endpoint, s3_port- specifiche dell'endpoint S3. Utilizziamo questi parametri per sostituire il vero endpoint S3 con quello falso lanciato dalla gemma FakeS3: tutte le richieste al servizio di Amazon saranno ora delegate al fakeserver locale.
  • s3_force_path_style - S3 accetta due stili di inclusione del nome del bucket nell'URL. Si può scegliere se inserire il nome del bucket in stile dominio (bucket.s3.amazonaws.com) o in stile percorso (s3.amazonaws.com/bucket). Per mantenere le cose semplici ed evitare configurazioni aggiuntive associate alla mappatura del sottodominio del bucket all'indirizzo di loopback, nell'ambiente di sviluppo preferisco il path-style al domain-style.
  • usa_ssl - impone all'SDK di AWS di usare HTTPS invece di HTTP. Dobbiamo disabilitare questa opzione, perché la gemma FakeS3 non supporta le richieste HTTPS che il client AWS esegue per impostazione predefinita.

La configurazione per l'ambiente di produzione è piuttosto semplice:

# config/aws.yml

produzione: &produzione
    access_key_id:     
    secret_access_key: 

staging: *produzione

Questa volta, però, abbiamo a che fare con un vero servizio S3, quindi è necessario fornire credenziali AWS autentiche.

A causa dei potenziali rischi per la sicurezza, è buona norma tenere i valori segreti, come le chiavi di accesso, fuori dal sistema di controllo della versione, ad esempio usando le variabili d'ambiente. Useremo ERB per iniettare i suoi valori nel file di configurazione.

Configurazione della graffetta

Ora è il momento di affrontare Paperclip e forzarlo a lavorare in modo corretto con il client S3 già configurato. L'obiettivo principale della configurazione di Paperclip è ottenere il percorso di memorizzazione che localizzerà le risorse ospitate da fakeserver:

localhost:10001/:bucket_name/:path

Ancora una volta, iniziamo con l'ambiente di sviluppo:

# config/paperclip.yml

sviluppo: &sviluppo
    archiviazione: :s3
    bucket: "development"
    nome_host_s3: "localhost
    url: ":s3_alias_url"
    percorso: ":class/:attachment/:id_partition/:style/:filename.:extension"
    s3_host_alias: "localhost:10001/development"

test: *sviluppo
  • immagazzinamento - specifica il vettore di archiviazione (per impostazione predefinita il filesystem locale). Poiché stiamo usando AWS S3, dobbiamo cambiarlo in :s3.
  • secchio - nome del bucket S3 che memorizzerà i file. Se il bucket non esiste, Paperclip tenterà di crearlo.
  • url - impostato su :s3_alias_url farà in modo che Paperclip alias il nome host del bucket S3 con il valore specificato da :s3_host_alias parametro.
  • s3_host_alias - alias per l'host del bucket S3 predefinito. Si noti che l'host, la porta e il nome del bucket corrispondono alla configurazione del client AWS.
  • percorso - per le chiavi con cui i file saranno memorizzati nel bucket. Le chiavi devono essere uniche all'interno del bucket, come i nomi dei file. Dato che S3 non supporta le directory, è possibile utilizzare una chiave di tipo / per simulare strutture di directory.
# config/paperclip.yml

produzione: &produzione
    archiviazione: :s3
    bucket:  
    url:     ":s3_domain_url"
    percorso:    ":class/:attachment/:id_partition/:style/:filename.:extension"

staging: *produzione

Analogamente alle credenziali AWS, anche il nome del bucket è considerato un valore segreto che deve essere memorizzato al di fuori della base di codice. Si consiglia di memorizzare il nome in una variabile d'ambiente.

Infine, unire la configurazione alle opzioni predefinite di Paperclip in un inizializzatore:

# config/initializers/paperclip.rb

paperclip_defaults = Rails.application.config_for :paperclip
paperclip_defaults.symbolize_keys!

Paperclip::Attachment.default_options.merge! paperclip_defaults

Esecuzione di fakes3

Entrambe le configurazioni di AWS e Paperclip contengono un riferimento al fakeserver S3 locale che dovrebbe essere eseguito sotto localhost:10001. Prima di lavorare allo sviluppo è necessario lanciare il server con il seguente comando (fornito dalla gemma FakeS3):

fakes3 -r public/system -p 10001

I parametri passati sono:

  • root -r - la directory principale in cui verranno memorizzati i file caricati. Considerare di escluderla dal VCS se non si vuole che i file caricati siano memorizzati nel repository.
  • porta -p - numero della porta su cui verrà eseguito il server locale.

Se si utilizza Foreman per la gestione dei processi nella propria applicazione, può essere conveniente aggiungere la seguente voce in Procfile:

Profilo di processo #

fakes3: fakes3 -r ${FAKES3_STORAGE_PATH:-public/system} -p ${FAKES3_PORT:-10001}

In questo modo si risparmierà il tempo perso per lanciare fakeserver ogni volta che si dovrà sviluppare qualche funzionalità legata a S3.

Conclusione

Abbiamo configurato il client AWS in modo che deleghi tutte le richieste al fakeserver locale, abbiamo impostato Paperclip in modo che utilizzi l'endpoint S3 falso negli URL delle risorse costruite e abbiamo lanciato il fakeserver fornito dal gemma Fake S3 che memorizza tutti i file nel filesystem locale.

Di conseguenza, siamo diventati indipendenti dalla connessione a Internet e abbiamo risparmiato denaro, rendendo il nostro sviluppo più veloce e affidabile.

Articoli correlati

Sviluppo di software

Costruire applicazioni web a prova di futuro: le intuizioni del team di esperti di The Codest

Scoprite come The Codest eccelle nella creazione di applicazioni web scalabili e interattive con tecnologie all'avanguardia, offrendo esperienze utente senza soluzione di continuità su tutte le piattaforme. Scoprite come la nostra esperienza favorisce la trasformazione digitale e il business...

IL CANCRO
Sviluppo di software

Le 10 principali aziende di sviluppo software con sede in Lettonia

Scoprite le migliori aziende di sviluppo software della Lettonia e le loro soluzioni innovative nel nostro ultimo articolo. Scoprite come questi leader tecnologici possono aiutarvi a migliorare la vostra attività.

thecodest
Soluzioni per aziende e scaleup

Essenziali di sviluppo software Java: Guida all'outsourcing di successo

Esplorate questa guida essenziale sullo sviluppo di software Java con successo outsourcing per migliorare l'efficienza, accedere alle competenze e guidare il successo del progetto con The Codest.

thecodest
Sviluppo di software

La guida definitiva all'outsourcing in Polonia

L'aumento di outsourcing in Polonia è guidato dai progressi economici, educativi e tecnologici, che favoriscono la crescita dell'IT e un clima favorevole alle imprese.

IlCodesto
Soluzioni per aziende e scaleup

Guida completa agli strumenti e alle tecniche di audit IT

Gli audit IT garantiscono sistemi sicuri, efficienti e conformi. Per saperne di più sulla loro importanza, leggete l'articolo completo.

The Codest
Jakub Jakubowicz CTO e cofondatore

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

    it_ITItalian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek it_ITItalian