window.pipedriveLeadboosterConfig = { basis: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versie: 2, } ;(functie () { var w = venster als (w.LeadBooster) { console.warn('LeadBooster bestaat al') } anders { w.LeadBooster = { q: [], on: functie (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: functie (n) { this.q.push({ t: 't', n: n }) }, } } })() GRATIS ONTWIKKELING MET AWS S3 EN PAPERCLIP - The Codest
The Codest
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Industrie
    • Fintech & Bankieren
    • E-commerce
    • Adtech
    • Gezondheidstechnologie
    • Productie
    • Logistiek
    • Automotive
    • IOT
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
Pijl terug KEREN TERUG
2016-09-30
Software Ontwikkeling

GRATIS ONTWIKKELING MET AWS S3 EN PAPERCLIP

Bartosz Zurkowski

In de afgelopen jaren is online opslag mainstream geworden en biedt het zeer schaalbare architecturen, verbeterde beveiliging en brede toegankelijkheid van gegevens. Een van de populairste opslagdiensten is Amazons Simple Storage Service, beter bekend als S3.

Amazon S3 is een extreem krachtige dienst die de kern vormt van Amazon Web Services. Buiten de productieomgeving kan S3 echter een uitdaging zijn om mee te werken. Er moeten toegangssleutels worden doorgegeven, gebruikersaccounts moeten worden aangemaakt en er moet een betrouwbare netwerkverbinding worden onderhouden - en dan hebben we het nog niet eens over de kosten. FakeS3 is een lichtgewicht server die het gedrag van het echte S3 simuleert. Hij reageert op dezelfde aanroepen als Amazon S3 en slaat geüploade bestanden op in je lokale bestandssysteem - er worden geen verzoeken gedaan aan de service van Amazon. Hoewel gem niet de volledige set S3 commando's ondersteunt, is de geïmplementeerde API voldoende voor de meeste toepassingen.

In dit artikel presenteer ik de aanpak van het integreren van AWS en FakeS3 met Paperclip - populaire bestandsbijlagebibliotheek voor Active Record. Paperclip en S3 samen zorgen voor een effectief bestandsopslagsysteem dat handige kernfuncties van Paperclip (zoals validatiebeheer en beeldtransformaties) combineert met de voordelen van online opslag. Hoewel de configuratie van deze tools niet voor de hand ligt en het graven in gedetailleerde documentatie vereist evenals het oplossen van veel gem-specifieke problemen, is het de moeite waard om wat tijd te spenderen om de ontwikkeling sneller en efficiënter te maken.

Wat is ons doel?

Integratie van beschreven hulpmiddelen vereist drie stappen:

  1. Start S3 fakeserver geleverd door FakeS3 gem op de achtergrond.
  2. AWS S3-client configureren om alle verzoeken te delegeren naar een gelanceerde fakeserver.
  3. Paperclip configureren om een nep S3 eindpunt te gebruiken in de URL's van gebouwde bronnen.

Installatie

Laten we beginnen met het installeren van de vereiste edelstenen:

# Gemfile

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

gem "fakes3", groep: [:development, :test]

Zorg ervoor dat je versie 1.6 van aws-sdk installeert. Paperclip, dat SKD gebruikt om opslag in Amazon's service te beheren, werkt niet goed met hogere versies van dit juweeltje. Dit komt door significante veranderingen in de API van SDK die met versie 2.0 zijn geïntroduceerd.

Onthoud ook dat het hoofddoel van FakeS3 is om runtime afhankelijkheden te minimaliseren. Het is meer een ontwikkeltool om S3-aanroepen te testen in je code in plaats van een productieserver die S3 functionaliteit wil dupliceren. Daarom moet je gem alleen opnemen in de ontwikkel- en testgroep.

AWS-configuratie

AWS SDK biedt een speciale helpermethode die verantwoordelijk is voor het laden van de configuratie. Standaard wordt de configuratie geladen van config/aws.ymlde parameters voor de huidige omgeving en geef ze door aan de AWS-client. Roep eerst de volgende methode aan in een initializer:

# config/initializers/aws.rb

AWS::Rails.load_yaml_config

Nu het configuratiebestand op de juiste manier is geladen, kunnen we verder gaan met het specificeren van de inhoud:

# config/aws.yml

ontwikkeling: &ontwikkeling
    toegang_key_id: "abc".
    geheime_toegangssleutel: "abc"
    s3_endpoint: "localhost".
    s3_poort: 10001
    s3_force_path_style: true
    gebruik_ssl: false

test: *ontwikkeling

Laten we alle parameters een voor een bespreken:

  • toegang_key_id, geheime_toegang_sleutel - AWS client credentials die nodig zijn om toegang te krijgen tot je Amazon account. Ze worden genegeerd door nep S3 server vandaar aangepaste waarden in sandbox omgevingen.
  • s3_endpoint, s3_poort- S3 eindpunt specificatie. We gebruiken deze parameters om het echte S3 eindpunt te vervangen door een nep eindpunt gelanceerd door FakeS3 gem - alle verzoeken naar Amazon's service worden nu gedelegeerd naar de lokale fakeserver.
  • s3_kracht_pad_stijl - S3 accepteert twee stijlen voor het opnemen van de naam van de emmer in de URL. Je kunt ervoor kiezen om de naam van de emmer te plaatsen in de domeinstijl (emmer.s3.amazonaws.com) of in de padstijl (s3.amazonaws.com/bucket). Om de dingen eenvoudig te houden en extra configuratie te vermijden voor het toewijzen van het subdomein van de emmer aan het loopback adres, geef ik in mijn ontwikkelomgeving de voorkeur aan de padstijl boven de domeinstijl.
  • gebruik_ssl - dwingt AWS SDK af om HTTPS te gebruiken in plaats van vanilla HTTP. We moeten deze optie uitschakelen, omdat FakeS3 gem geen HTTPS-verzoeken ondersteunt die AWS-client standaard uitvoert.

De configuratie voor een productieomgeving is vrij eenvoudig:

# config/aws.yml

productie: &productie
    access_key_id:     
    geheime_toegang_sleutel: 

staging: *productie

Deze keer hebben we echter te maken met de echte S3-service, daarom moet je authentieke AWS-referenties opgeven.

Vanwege potentiële veiligheidsrisico's is het een goede gewoonte om geheime waarden zoals toegangssleutels buiten je versiebeheersysteem te houden, bijvoorbeeld door omgevingsvariabelen te gebruiken. We zullen ERB gebruiken om zijn waarden in het configuratiebestand te injecteren.

Paperclip configuratie

Nu is het tijd om Paperclip onder ogen te komen en het te dwingen om netjes samen te werken met de al geconfigureerde S3 client. Het hoofddoel van Paperclip's configuratie is het verkrijgen van het opslagpad dat de bronnen zal lokaliseren die worden gehost door fakeserver:

localhost:10001/:emmer_naam/:pad

Laten we opnieuw beginnen met de ontwikkelomgeving:

# config/paperclip.yml

ontwikkeling: &ontwikkeling
    opslag: :s3
    emmer: "development"
    s3_host_naam: "localhost".
    url: ":s3_alias_url"
    pad: ":class/:attachment/:id_partition/:style/:filename.:extension"
    s3_host_alias: "localhost:10001/development"

test: *ontwikkeling
  • opslag - geeft de opslagdrager aan (standaard lokaal bestandssysteem). Omdat we AWS S3 gebruiken, moeten we dit veranderen in :s3.
  • emmer - naam van de S3 emmer waarin uw bestanden worden opgeslagen. Als de emmer niet bestaat, probeert Paperclip deze aan te maken.
  • url - ingesteld op :s3_alias_url zorgt ervoor dat Paperclip de hostnaam van de S3-bucket aliast met de waarde gespecificeerd door :s3_host_alias parameter.
  • s3_host_alias - alias voor de standaard host van de S3-bucket. Merk op dat de plaatsing van host, poort en emmernaam overeenkomt met de configuratie van de AWS-client.
  • pad - patroon voor sleutels waaronder de bestanden zullen worden opgeslagen in de emmer. Sleutels moeten uniek zijn binnen de emmer, net als bestandsnamen. Omdat S3 geen mappen ondersteunt, kun je een / symbool om directorystructuren te simuleren.
# config/paperclip.yml

productie: &productie
    opslag: :s3
    emmer:  
    url:     ":s3_domein_url"
    pad:    ":class/:attachment/:id_partition/:style/:filename.:extension"

staging: *productie

Net als AWS-referenties wordt ook de bucketnaam beschouwd als een geheime waarde die buiten je code base moet worden opgeslagen. Ik raad aan om de naam op te slaan in een omgevingsvariabele.

Voeg ten slotte de configuratie samen met de standaardopties van Paperclip in een initializer:

# config/initializers/paperclip.rb

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

Paperclip::Attachment.default_options.merge! paperclip_defaults

Fakes3 uitvoeren

Zowel AWS als Paperclip configuraties bevatten een verwijzing naar de lokale S3 fakeserver die naar verwachting draait onder localhost:10001. Voordat je aan ontwikkeling doet, moet je de server starten met het volgende commando (geleverd door FakeS3 gem):

fakes3 -r public/system -p 10001

Doorgegeven parameters zijn:

  • root -r - Hoofdmap waaronder geüploade bestanden worden opgeslagen. Overweeg om deze uit te sluiten van VCS als je niet wilt dat geüploade bestanden worden opgeslagen in je archief.
  • poort -p - nummer van de poort waarop de lokale server zal draaien.

Als je Foreman gebruikt voor procesbeheer in je applicatie, kan het handig zijn om de volgende regel toe te voegen aan Procfile:

# Procfile

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

Dit bespaart je tijd die je kwijt bent aan het starten van fakeserver elke keer dat je een S3-gerelateerde functie moet ontwikkelen.

Conclusie

We hebben de AWS client geconfigureerd om alle verzoeken te delegeren naar de lokale fakeserver, Paperclip ingesteld om een nep S3 endpoint te gebruiken in de URL's van de gebouwde bronnen en de fakeserver gestart die wordt geleverd door de Fake S3 gem die alle bestanden opslaat in het lokale bestandssysteem.

Hierdoor werden we onafhankelijk van internetverbindingen en bespaarden we geld, waardoor onze ontwikkeling sneller en betrouwbaarder werd.

Verwante artikelen

Software Ontwikkeling

Bouw Toekomstbestendige Web Apps: Inzichten van The Codest's Expert Team

Ontdek hoe The Codest uitblinkt in het creëren van schaalbare, interactieve webapplicaties met geavanceerde technologieën, het leveren van naadloze gebruikerservaringen op alle platforms. Ontdek hoe onze expertise digitale transformatie en business...

DE BESTE
Software Ontwikkeling

Top 10 in Letland gevestigde bedrijven voor softwareontwikkeling

Lees meer over de beste softwareontwikkelingsbedrijven van Letland en hun innovatieve oplossingen in ons nieuwste artikel. Ontdek hoe deze technologieleiders uw bedrijf kunnen helpen verbeteren.

thecodest
Oplossingen voor ondernemingen en schaalvergroting

Essentiële Java-softwareontwikkeling: Een gids voor succesvol uitbesteden

Verken deze essentiële gids over succesvolle outsourcing Java-softwareontwikkeling om de efficiëntie te verbeteren, toegang te krijgen tot expertise en projectsucces te stimuleren met The Codest.

thecodest
Software Ontwikkeling

De ultieme gids voor outsourcing in Polen

De sterke groei van outsourcing in Polen wordt gedreven door economische, educatieve en technologische vooruitgang, die IT-groei en een bedrijfsvriendelijk klimaat stimuleert.

DeCodest
Oplossingen voor ondernemingen en schaalvergroting

De complete gids voor IT-auditmiddelen en -technieken

IT-audits zorgen voor veilige, efficiënte en compliant systemen. Lees het volledige artikel om meer te weten te komen over het belang ervan.

The Codest
Jakub Jakubowicz CTO & medeoprichter

Abonneer je op onze kennisbank en blijf op de hoogte van de expertise uit de IT-sector.

    Over ons

    The Codest - Internationaal softwareontwikkelingsbedrijf met technische hubs in Polen.

    Verenigd Koninkrijk - Hoofdkantoor

    • Kantoor 303B, 182-184 High Street North E6 2JA
      Londen, Engeland

    Polen - Lokale technologieknooppunten

    • Fabryczna kantorenpark, Aleja
      Pokoju 18, 31-564 Krakau
    • Hersenambassade, Konstruktorska
      11, 02-673 Warschau, Polen

      The Codest

    • Home
    • Over ons
    • Diensten
    • Case Studies
    • Weten hoe
    • Carrière
    • Woordenboek

      Diensten

    • Het advies
    • Software Ontwikkeling
    • Backend ontwikkeling
    • Frontend ontwikkeling
    • Staff Augmentation
    • Backend ontwikkelaars
    • Cloud Ingenieurs
    • Gegevensingenieurs
    • Andere
    • QA ingenieurs

      Bronnen

    • Feiten en fabels over samenwerken met een externe partner voor softwareontwikkeling
    • Van de VS naar Europa: Waarom Amerikaanse startups besluiten naar Europa te verhuizen
    • Tech Offshore Ontwikkelingshubs Vergelijking: Tech Offshore Europa (Polen), ASEAN (Filippijnen), Eurazië (Turkije)
    • Wat zijn de grootste uitdagingen voor CTO's en CIO's?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Gebruiksvoorwaarden website

    Copyright © 2025 door The Codest. Alle rechten voorbehouden.

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