window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } 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 }) }, } } })() TARPEETON KEHITYS AWS S3:N JA PAPERILIITTIMEN AVULLA - The Codest
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2016-09-30
Ohjelmistokehitys

TARPEETON KEHITYS AWS S3:N JA PAPERCLIPIN AVULLA

Bartosz Zurkowski

Viime vuosina verkkotallennuksista on tullut valtavirtaa, ja ne tarjoavat erittäin skaalautuvia arkkitehtuureja, parannettua turvallisuutta ja laajan tiedonsaannin. Yksi suosituimmista tallennuspalveluista on Amazonin Simple Storage Service, joka tunnetaan yleisesti nimellä S3.

Amazon S3 on erittäin tehokas palvelu, joka on Amazon Web Servicesin ydin. Tuotantoympäristön ulkopuolella S3:n kanssa voi kuitenkin olla haastavaa työskennellä. Siihen liittyy pääsyavainten kiertelyä, käyttäjätilien käyttöönottoa ja luotettavan verkkoyhteyden ylläpitoa - puhumattakaan siitä, että se maksaa rahaa.Onneksi on olemassa työkalu, joka auttaa ratkaisemaan tämän ongelman. FakeS3 on kevyt palvelin, joka simuloi oikean S3:n käyttäytymistä. Se vastaa samoihin kutsuihin, joihin Amazon S3 vastaa, ja tallentaa ladatut tiedostot paikalliseen tiedostojärjestelmääsi - Amazonin palveluun ei tehdä pyyntöjä. Vaikka gem ei tue kaikkia S3:n komentoja, toteutettu API riittää useimpien sovellusten käyttötapauksiin.

Tässä artikkelissa esittelen lähestymistavan, jolla integroidaan AWS ja FakeS3 ja Paperclip - suosittu tiedostojen liitekirjasto Active Recordille. Paperclip ja S3 yhdessä tarjoavat tehokkaan tiedostojen tallennusjärjestelmän, jossa yhdistyvät Paperclipin hyödylliset perusominaisuudet (kuten validointien hallinta ja kuvamuunnokset) ja verkkotallennuksen edut. Vaikka näiden työkalujen konfigurointi ei ole itsestään selvää ja vaatii yksityiskohtaisen dokumentaation tutkimista sekä monien helmikohtaisten ongelmien ratkaisemista, kannattaa käyttää hieman aikaa kehityksen nopeuttamiseen ja tehostamiseen.

Mikä on tavoitteemme?

Kuvattujen työkalujen integrointi edellyttää kolmea vaihetta:

  1. Käynnistetään taustalla FakeS3-jalokiven tarjoama S3-fakepalvelin.
  2. AWS S3 -asiakkaan määrittäminen delegoimaan kaikki pyynnöt käynnistetylle väärennetylle palvelimelle.
  3. Paperclipin määrittäminen käyttämään väärennettyä S3-päätepistettä rakennettujen resurssien URL-osoitteissa.

Asennus

Aloitetaan asentamalla tarvittavat jalokivet:

# Gemfile

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

gem "fakes3", ryhmä: [:development, :test]

Varmista, että asennat aws-sdk:n version 1.6. Paperclip, joka käyttää SKD:tä Amazonin palvelun tallennustilan hallintaan, ei toimi hyvin tämän helmen korkeampien versioiden kanssa. Tämä johtuu SDK:n API:n merkittävistä muutoksista, jotka versio 2.0 toi mukanaan.

Muista myös, että FakeS3:n päätavoitteena on minimoida ajoaikariippuvuudet. Se on enemmänkin kehitystyökalu, jolla voit testata S3-kutsuja omassa koodi eikä tuotantopalvelimelle, joka haluaa kopioida S3:n toimintoja. Sen vuoksi sinun tulisi sisällyttää gem vain kehitys- ja testiryhmään.

AWS-konfiguraatio

AWS SDK tarjoaa erityisen apumenetelmän, joka vastaa konfiguraation lataamisesta. Se lataa oletusarvoisesti konfiguraation osoitteesta config/aws.yml, poimii sen parametrit nykyistä ympäristöä varten ja välittää ne AWS-asiakkaalle. Kutsu ensin seuraavaa metodia alustajassa:

# config/initializers/aws.rb config/initializers/aws.rb

AWS::Rails.load_yaml_config

Nyt, kun konfiguraatiotiedosto on ladattu oikein, voimme jatkaa sen sisällön määrittämistä:

# config/aws.yml

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

test: *development

Käsitellään kaikki parametrit yksitellen:

  • access_key_id, secret_access_key, salainen_avain - AWS-asiakkaan tunnistetiedot, joita tarvitaan Amazon-tilisi käyttämiseen. Niitä ei huomioida väärennetyllä S3-palvelimella, joten mukautetut arvot hiekkalaatikkoympäristöissä.
  • s3_endpoint, s3_portti- S3-päätepisteen määrittely. Käytämme näitä parametreja korvataksemme todellisen S3-päätepisteen FakeS3-helmen käynnistämällä väärennetyllä päätepisteellä - kaikki Amazonin palveluun kohdistuvat pyynnöt siirretään nyt paikalliselle väärennöspalvelimelle.
  • s3_force_path_style - S3 hyväksyy kaksi tapaa sisällyttää kauhan nimi URL-osoitteeseen. Voit valita, haluatko ämpäriin nimen domain-tyylisesti (bucket.s3.amazonaws.com) vai polkutyylisesti (s3.amazonaws.com/bucket). Jotta asiat pysyisivät yksinkertaisina ja jotta vältyttäisiin ylimääräisiltä asetuksilta, jotka liittyvät ämpärin aliverkkotunnuksen yhdistämiseen silmukan takaisinkytkentäosoitteeseen, suosin kehitysympäristössä polkutyyliä domain-tyylin sijaan.
  • use_ssl - pakottaa AWS SDK:n käyttämään HTTPS:ää vanilla-HTTP:n sijaan. Meidän on poistettava tämä vaihtoehto käytöstä, koska FakeS3 gem ei tue HTTPS-pyyntöjä, jotka AWS-asiakas tekee oletusarvoisesti.

Tuotantoympäristön konfigurointi on melko suoraviivaista:

# config/aws.yml

tuotanto: &tuotanto
    access_key_id:      %>
    secret_access_key:  %>

staging: *production

Tällä kertaa kyse on kuitenkin aidosta S3-palvelusta, joten sinun on annettava aidot AWS-tunnukset.

Mahdollisten tietoturvariskien vuoksi on hyvä käytäntö pitää salaiset arvot, kuten käyttöoikeudet, poissa versionhallintajärjestelmästä esimerkiksi käyttämällä ympäristömuuttujia. Käytämme ERB:tä sen arvojen syöttämiseen konfiguraatiotiedostoon.

Paperiliittimen kokoonpano

Nyt on aika kohdata Paperclip ja pakottaa se toimimaan hienosti jo määritetyn S3-asiakkaan kanssa. Paperclipin konfiguroinnin päätavoite on saada tallennuspolku, joka paikantaa fakeserverin isännöimät resurssit:

localhost:10001/:bucket_name/:path

Aloitetaan jälleen kehitysympäristöstä:

# config/paperclip.yml

kehitys: &kehitys
    varastointi: :s3
    bucket: "development"
    s3_host_name: "localhost"
    url: ":s3_alias_url"
    path: id_partition/:style/:fileename.:extension": ":class/:attachment/:id_partition/:style/:fileename.:extension"
    s3_host_alias: "localhost:10001/development"

test: *development
  • varastointi - määrittää tallennusvälineen (oletuksena paikallinen tiedostojärjestelmä). Koska käytämme AWS S3:a, meidän on muutettava se muotoon :s3.
  • ämpäri - sen S3-säiliön nimi, johon tiedostot tallennetaan. Jos ämpäriä ei ole olemassa, Paperclip yrittää luoda sen.
  • url - asetettu :s3_alias_url aiheuttaa sen, että Paperclip alias S3-säiliön isäntänimen arvolla, joka on määritetty arvolla :s3_host_alias parametri.
  • s3_host_alias - alias oletusarvoisen S3-säiliön isännälle. Huomaa, että hostin, portin ja kauhan nimen sijoitus vastaa AWS-asiakkaan asetuksia.
  • polku - malli avaimille, joiden alle tiedostot tallennetaan ämpäriin. Avainten pitäisi olla yksilöllisiä ämpäriin, kuten tiedostonimien. Koska S3 ei tue hakemistoja, voit käyttää hakemistoa / symboli hakemistorakenteiden simuloimiseksi.
# config/paperclip.yml

tuotanto: &production
    varastointi: :s3
    bucket:  
    url:     ":s3_domain_url"
    path:    ":class/:attachment/:id_partition/:style/:filename.:extension"

staging: *production

AWS-tunnusten tapaan myös kauhan nimeä pidetään salaisena arvona, joka tulisi säilyttää koodipohjan ulkopuolella. Suosittelen sen nimen tallentamista ympäristömuuttujaan.

Yhdistä lopuksi konfiguraatio Paperclipin oletusasetuksiin alustuksessa:

# config/initializers/paperclip.rb

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

Paperclip::Attachment.default_options.merge! paperclip_defaults

Running fakes3

Sekä AWS- että Paperclip-konfiguraatiot sisältävät viittauksen paikalliseen S3-fakeserveriin, jonka odotetaan toimivan osoitteessa localhost:10001. Ennen kehitystyöskentelyä sinun tulee käynnistää palvelin seuraavalla komennolla (FakeS3 gemin tarjoama):

fakes3 -r public/system -p 10001

Välitettävät parametrit ovat:

  • root -r - juurihakemisto, johon ladatut tiedostot tallennetaan. Harkitse sen jättämistä pois VCS:stä, jos et halua, että ladatut tiedostot tallennetaan arkistoosi.
  • port -p - sen portin numero, jossa paikallista palvelinta käytetään.

Jos käytät Foremania prosessien hallintaan sovelluksessasi, voi olla kätevää lisätä Procfileen seuraava merkintä:

# Procfile

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

Näin säästät aikaa, joka kuluu fakeserverin käynnistämiseen joka kerta, kun sinun on kehitettävä joitakin S3:een liittyviä ominaisuuksia.

Päätelmä

Olemme määrittäneet AWS-asiakkaan delegoimaan kaikki pyynnöt paikalliselle väärennöspalvelimelle, asettaneet Paperclipin käyttämään väärennettyä S3-päätepistettä resurssien URL-osoitteissa ja käynnistäneet väärennetyn S3-jalokiven tarjoaman väärennöspalvelimen, joka tallentaa kaikki tiedostot paikalliseen tiedostojärjestelmään.

Tämän ansiosta meistä tuli riippumattomia Internet-yhteydestä ja säästimme rahaa, mikä nopeutti ja teki kehityksestämme luotettavampaa.

Aiheeseen liittyvät artikkelit

Ohjelmistokehitys

Tulevaisuuden web-sovellusten rakentaminen: The Codest:n asiantuntijatiimin näkemyksiä

Tutustu siihen, miten The Codest loistaa skaalautuvien, interaktiivisten verkkosovellusten luomisessa huipputeknologian avulla ja tarjoaa saumattomia käyttäjäkokemuksia kaikilla alustoilla. Lue, miten asiantuntemuksemme edistää digitaalista muutosta ja liiketoimintaa...

THECODEST
Ohjelmistokehitys

Top 10 Latviassa toimivaa ohjelmistokehitysyritystä

Tutustu Latvian parhaisiin ohjelmistokehitysyrityksiin ja niiden innovatiivisiin ratkaisuihin uusimmassa artikkelissamme. Tutustu siihen, miten nämä teknologiajohtajat voivat auttaa nostamaan liiketoimintaasi.

thecodest
Yritys- ja skaalausratkaisut

Java-ohjelmistokehityksen perusteet: A Guide to Outsourcing Successfully

Tutustu tähän keskeiseen oppaaseen Java-ohjelmistokehityksen onnistuneesta ulkoistamisesta tehokkuuden parantamiseksi, asiantuntemuksen saamiseksi ja projektin onnistumiseksi The Codestin avulla.

thecodest
Ohjelmistokehitys

Perimmäinen opas ulkoistamiseen Puolassa

Ulkoistamisen lisääntyminen Puolassa johtuu taloudellisesta, koulutuksellisesta ja teknologisesta kehityksestä, joka edistää tietotekniikan kasvua ja yritysystävällistä ilmapiiriä.

TheCodest
Yritys- ja skaalausratkaisut

Täydellinen opas IT-tarkastustyökaluihin ja -tekniikoihin

Tietotekniikan tarkastuksilla varmistetaan turvalliset, tehokkaat ja vaatimustenmukaiset järjestelmät. Lue lisää niiden merkityksestä lukemalla koko artikkeli.

Codest
Jakub Jakubowicz teknologiajohtaja ja toinen perustaja

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

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