window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster υπάρχει ήδη') } 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 }) }, } } })() ΔΩΡΕΆΝ ΑΝΆΠΤΥΞΗ ΜΕ AWS S3 ΚΑΙ PAPERCLIP - The Codest
The Codest
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2016-09-30
Ανάπτυξη λογισμικού

ΔΩΡΕΆΝ ΑΝΆΠΤΥΞΗ ΜΕ AWS S3 ΚΑΙ PAPERCLIP

Bartosz Zurkowski

Τα τελευταία χρόνια, η διαδικτυακή αποθήκευση έχει επικρατήσει, παρέχοντας αρχιτεκτονικές υψηλής κλιμάκωσης, ενισχυμένη ασφάλεια και ευρεία προσβασιμότητα στα δεδομένα. Μια από τις πιο δημοφιλείς υπηρεσίες αποθήκευσης είναι η υπηρεσία Simple Storage Service της Amazons, ευρέως γνωστή ως S3.

Το Amazon S3 είναι μια εξαιρετικά ισχυρή υπηρεσία στον πυρήνα των Amazon Web Services. Ωστόσο, εκτός του περιβάλλοντος παραγωγής, η S3 μπορεί να είναι δύσκολη στη χρήση. Περιλαμβάνει τη μεταβίβαση κλειδιών πρόσβασης, την παροχή λογαριασμών χρηστών και τη διατήρηση μιας αξιόπιστης σύνδεσης δικτύου - για να μην αναφέρουμε ότι κοστίζει χρήματα. ευτυχώς, υπάρχει ένα εργαλείο που βοηθά στην επίλυση αυτού του προβλήματος. Το FakeS3 είναι ένας ελαφρύς διακομιστής που προσομοιώνει τη συμπεριφορά του πραγματικού S3. Ανταποκρίνεται στις ίδιες κλήσεις στις οποίες ανταποκρίνεται το Amazon S3 και αποθηκεύει τα ανεβασμένα αρχεία στο τοπικό σας σύστημα αρχείων - δεν γίνονται αιτήσεις στην υπηρεσία της Amazon. Παρόλο που το gem δεν υποστηρίζει το πλήρες σύνολο των εντολών του S3, το API που έχει υλοποιηθεί είναι επαρκές για τις περισσότερες περιπτώσεις χρήσης εφαρμογών.

Σε αυτό το άρθρο θα παρουσιάσω την προσέγγιση της ενσωμάτωσης των AWS και FakeS3 με Paperclip - δημοφιλής βιβλιοθήκη επισύναψης αρχείων για την Active Record. Το Paperclip και το S3 σε συνδυασμό παρέχουν αποτελεσματικό σύστημα αποθήκευσης αρχείων που συνδυάζει τα χρήσιμα βασικά χαρακτηριστικά του Paperclip (όπως η διαχείριση επικυρώσεων και οι μετασχηματισμοί εικόνων) με τα πλεονεκτήματα της online αποθήκευσης. Παρόλο που η διαμόρφωση αυτών των εργαλείων δεν είναι προφανής και απαιτεί το σκάψιμο στη λεπτομερή τεκμηρίωση καθώς και την επίλυση πολλών ειδικών για το gem ζητημάτων, αξίζει να αφιερώσετε λίγο χρόνο για να κάνετε την ανάπτυξη ταχύτερη και αποτελεσματικότερη.

Ποιος είναι ο στόχος μας;

Η ενσωμάτωση των περιγραφόμενων εργαλείων απαιτεί τρία βήματα:

  1. Εκκίνηση του S3 fakeserver που παρέχεται από το πολύτιμο λίθο FakeS3 στο παρασκήνιο.
  2. Ρύθμιση του πελάτη AWS S3 ώστε να αναθέτει όλα τα αιτήματα στον δρομολογημένο fakeserver.
  3. Ρύθμιση του Paperclip για τη χρήση ψεύτικου τελικού σημείου S3 στις διευθύνσεις URL των ενσωματωμένων πόρων.

Εγκατάσταση

Ας ξεκινήσουμε με την εγκατάσταση των απαιτούμενων πολύτιμων λίθων:

# Gemfile

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

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

Βεβαιωθείτε ότι έχετε εγκαταστήσει την έκδοση 1.6 του aws-sdk. Το Paperclip που χρησιμοποιεί το SKD για τη διαχείριση του αποθηκευτικού χώρου στην υπηρεσία της Amazon δεν λειτουργεί καλά με υψηλότερες εκδόσεις αυτού του πολύτιμου λίθου. Αυτό οφείλεται σε σημαντικές αλλαγές στο API του SDK που επέφερε η έκδοση 2.0.

Θυμηθείτε επίσης ότι ο κύριος στόχος του FakeS3 είναι η ελαχιστοποίηση των εξαρτήσεων κατά το χρόνο εκτέλεσης. Είναι περισσότερο ένα εργαλείο ανάπτυξης για να δοκιμάζετε τις κλήσεις S3 στο κωδικός παρά σε έναν διακομιστή παραγωγής που επιθυμεί να αντιγράψει τη λειτουργικότητα του S3. Επομένως, θα πρέπει να συμπεριλάβετε το gem μόνο στην ομάδα ανάπτυξης και δοκιμών.

Διαμόρφωση AWS

Το AWS SDK παρέχει μια ειδική βοηθητική μέθοδο που είναι υπεύθυνη για τη φόρτωση των ρυθμίσεων. Από προεπιλογή θα φορτώσει τη διαμόρφωση από την config/aws.yml, εξάγει τις παραμέτρους του για το τρέχον περιβάλλον και τις μεταβιβάζει στον πελάτη AWS. Πρώτον, καλέστε την ακόλουθη μέθοδο σε έναν αρχικοποιητή:

# config/initializers/aws.rb

AWS::Rails.load_yaml_config

Τώρα, καθώς έχουμε φορτώσει σωστά το αρχείο ρυθμίσεων, μπορούμε να προχωρήσουμε στον καθορισμό του περιεχομένου του:

# config/aws.yml

ανάπτυξη: &development
    access_key_id: "abc"
    secret_access_key: "abc"
    s3_endpoint: "localhost"
    s3_port: 10001
    s3_force_path_style: true
    use_ssl: false

test: *development

Ας συζητήσουμε όλες τις παραμέτρους μία προς μία:

  • access_key_id, secret_access_key - Τα διαπιστευτήρια πελάτη AWS που απαιτούνται για να αποκτήσετε πρόσβαση στο λογαριασμό σας στην Amazon. Αγνοούνται από τον ψεύτικο διακομιστή S3 ως εκ τούτου, οι προσαρμοσμένες τιμές σε περιβάλλοντα sandbox.
  • s3_endpoint, s3_port- Προδιαγραφή τελικού σημείου S3. Χρησιμοποιούμε αυτές τις παραμέτρους για να αντικαταστήσουμε το πραγματικό τελικό σημείο S3 με ένα ψεύτικο τελικό σημείο που εκκινείται από το πολύτιμο λίθο FakeS3 - όλα τα αιτήματα προς την υπηρεσία της Amazon θα ανατίθενται τώρα στον τοπικό ψεύτικο διακομιστή.
  • s3_force_path_style - Το S3 δέχεται δύο μορφές συμπερίληψης του ονόματος του κάδου στη διεύθυνση URL. Μπορείτε να επιλέξετε να τοποθετηθεί το όνομα του κάδου σε στυλ τομέα (bucket.s3.amazonaws.com) ή σε στυλ διαδρομής (s3.amazonaws.com/bucket). Προκειμένου να διατηρήσετε τα πράγματα απλά και να αποφύγετε τις επιπλέον ρυθμίσεις που σχετίζονται με την αντιστοίχιση του subdomain του bucket σε διεύθυνση loopback προτιμώ το path-style από το domain-style σε περιβάλλον ανάπτυξης.
  • use_ssl - επιβάλλει στο AWS SDK να χρησιμοποιεί HTTPS αντί για vanilla HTTP. Πρέπει να απενεργοποιήσουμε αυτή την επιλογή, επειδή το FakeS3 gem δεν υποστηρίζει τα αιτήματα HTTPS που εκτελεί ο πελάτης AWS από προεπιλογή.

Η διαμόρφωση για το περιβάλλον παραγωγής είναι αρκετά απλή:

# config/aws.yml

παραγωγή: &production
    access_key_id:     
    secret_access_key: 

staging: *production

Αυτή τη φορά, όμως, έχουμε να κάνουμε με την πραγματική υπηρεσία S3, επομένως πρέπει να δώσετε αυθεντικά διαπιστευτήρια AWS.

Λόγω πιθανών κινδύνων ασφαλείας, είναι καλή πρακτική να κρατάτε μυστικές τιμές όπως τα κλειδιά πρόσβασης εκτός του συστήματος ελέγχου εκδόσεων, π.χ. χρησιμοποιώντας μεταβλητές περιβάλλοντος. Θα χρησιμοποιήσουμε το ERB για να εισάγουμε τις τιμές του στο αρχείο ρυθμίσεων.

Διαμόρφωση με συνδετήρα

Τώρα ήρθε η ώρα να αντιμετωπίσετε το Paperclip και να το αναγκάσετε να συνεργαστεί με τον ήδη ρυθμισμένο πελάτη S3. Ο κύριος στόχος της διαμόρφωσης του Paperclip είναι να αποκτήσει τη διαδρομή αποθήκευσης που θα εντοπίσει τους πόρους που φιλοξενούνται από τον fakeserver:

localhost:10001/:bucket_name/:path

Και πάλι, ας ξεκινήσουμε με το περιβάλλον ανάπτυξης:

# config/paperclip.yml

ανάπτυξη: &development
    αποθήκευση: :s3
    bucket: "development"
    s3_host_name: "localhost"
    url: ":s3_alias_url"
    path: : ":class/:attachment/:id_partition/:style/:filename.:extension"
    s3_host_alias: "localhost:10001/development"

test: *development
  • αποθήκευση - καθορίζει τον φορέα αποθήκευσης (από προεπιλογή τοπικό σύστημα αρχείων). Εφόσον χρησιμοποιούμε το AWS S3 πρέπει να το αλλάξουμε σε :s3.
  • κουβάς - το όνομα του κάδου S3 που θα αποθηκεύει τα αρχεία σας. Εάν ο κάδος δεν υπάρχει, το Paperclip θα προσπαθήσει να τον δημιουργήσει.
  • url - σε :s3_alias_url θα αναγκάσει το Paperclip να δώσει ψευδώνυμο στο όνομα κεντρικού υπολογιστή του κάδου S3 με την τιμή που καθορίζεται από το :s3_host_alias παράμετρος.
  • s3_host_alias - ψευδώνυμο για τον προεπιλεγμένο κεντρικό υπολογιστή του κάδου S3. Σημειώστε ότι η τοποθέτηση του host, της θύρας και του ονόματος του κάδου αντιστοιχεί στη διαμόρφωση του πελάτη AWS.
  • διαδρομή - μοτίβο για τα κλειδιά κάτω από τα οποία θα αποθηκεύονται τα αρχεία στον κάδο. Τα κλειδιά θα πρέπει να είναι μοναδικά μέσα στον κάδο, όπως τα ονόματα αρχείων. Λόγω του γεγονότος ότι το S3 δεν υποστηρίζει καταλόγους, μπορείτε να χρησιμοποιήσετε ένα / σύμβολο για την προσομοίωση δομών καταλόγων.
# config/paperclip.yml

παραγωγή: &production
    αποθήκευση: :s3
    bucket:  
    url:     ":s3_domain_url"
    path:    ":class/:attachment/:id_partition/:style/:filename.:extension"

staging: *production

Ομοίως με τα διαπιστευτήρια AWS, το όνομα κάδου θεωρείται επίσης μια μυστική τιμή η οποία θα πρέπει να αποθηκεύεται εκτός της βάσης του κώδικά σας. Συνιστώ την αποθήκευση του ονόματός του σε μεταβλητή περιβάλλοντος.

Τέλος, συγχωνεύστε τη διαμόρφωση στις προεπιλεγμένες επιλογές του Paperclip σε έναν αρχικοποιητή:

# config/initializers/paperclip.rb

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

Paperclip::Attachment.default_options.merge! paperclip_defaults

Εκτέλεση fakes3

Και οι δύο διαμορφώσεις του AWS και του Paperclip περιέχουν μια αναφορά στον τοπικό S3 fakeserver που αναμένεται να εκτελείται κάτω από το όνομα localhost:10001. Πριν ξεκινήσετε την ανάπτυξη, θα πρέπει να εκκινήσετε τον διακομιστή με την ακόλουθη εντολή (παρέχεται από το FakeS3 gem):

fakes3 -r public/system -p 10001

Οι μεταβιβαζόμενες παράμετροι είναι:

  • root -r - ριζικός κατάλογος κάτω από τον οποίο θα αποθηκεύονται τα αρχεία που μεταφορτώνονται. Εξετάστε το ενδεχόμενο να το αποκλείσετε από το VCS αν δεν θέλετε να αποθηκεύονται τα αρχεία που μεταφορτώνονται στο αποθετήριο σας.
  • port -p - αριθμός της θύρας στην οποία θα εκτελεστεί ο τοπικός διακομιστής.

Αν χρησιμοποιείτε το Foreman για τη διαχείριση διεργασιών στην εφαρμογή σας, μπορεί να είναι βολικό να προσθέσετε την ακόλουθη καταχώρηση στο Procfile:

# Αρχείο Procfile

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

Αυτό θα σας εξοικονομήσει χρόνο που χάνετε για την εκκίνηση του fakeserver κάθε φορά που θα χρειαστεί να αναπτύξετε κάποια χαρακτηριστικά που σχετίζονται με το S3.

Συμπέρασμα

Διαμορφώσαμε τον πελάτη AWS να αναθέτει όλες τις αιτήσεις στον τοπικό ψεύτικο διακομιστή, ρυθμίσαμε το Paperclip να χρησιμοποιεί το ψεύτικο S3 endpoint στις διευθύνσεις URL των πόρων και ξεκινήσαμε τον ψεύτικο διακομιστή που παρέχεται από το Fake S3 gem αποθηκεύοντας όλα τα αρχεία στο τοπικό σύστημα αρχείων.

Ως αποτέλεσμα, ανεξαρτητοποιηθήκαμε από τη σύνδεση στο Διαδίκτυο και εξοικονομήσαμε χρήματα κάνοντας την ανάπτυξή μας ταχύτερη και πιο αξιόπιστη.

Σχετικά άρθρα

Ανάπτυξη λογισμικού

Κατασκευάστε μελλοντικά ασφαλείς εφαρμογές Web: γνώσεις από την ομάδα εμπειρογνωμόνων του The Codest

Ανακαλύψτε πώς η The Codest υπερέχει στη δημιουργία κλιμακούμενων, διαδραστικών εφαρμογών ιστού με τεχνολογίες αιχμής, παρέχοντας απρόσκοπτη εμπειρία χρήστη σε όλες τις πλατφόρμες. Μάθετε πώς η τεχνογνωσία μας οδηγεί στον ψηφιακό μετασχηματισμό και την επιχειρηματική...

THECODEST
Ανάπτυξη λογισμικού

Top 10 εταιρείες ανάπτυξης λογισμικού με έδρα τη Λετονία

Μάθετε για τις κορυφαίες εταιρείες ανάπτυξης λογισμικού της Λετονίας και τις καινοτόμες λύσεις τους στο τελευταίο μας άρθρο. Ανακαλύψτε πώς αυτοί οι τεχνολογικοί ηγέτες μπορούν να βοηθήσουν στην ανύψωση της επιχείρησής σας.

thecodest
Λύσεις Enterprise & Scaleups

Βασικά στοιχεία ανάπτυξης λογισμικού Java: Α Guide to Outsourcing Successfully (Οδηγός για την επιτυχή εξωτερική ανάθεση)

Εξερευνήστε αυτόν τον βασικό οδηγό για την επιτυχή ανάπτυξη λογισμικού outsourcing Java για να αυξήσετε την αποδοτικότητα, να αποκτήσετε πρόσβαση στην τεχνογνωσία και να οδηγήσετε την επιτυχία των έργων με The Codest.

thecodest
Ανάπτυξη λογισμικού

Ο απόλυτος οδηγός για το Outsourcing στην Πολωνία

Η έξαρση της outsourcing στην Πολωνία οφείλεται στις οικονομικές, εκπαιδευτικές και τεχνολογικές εξελίξεις, που ευνοούν την ανάπτυξη της πληροφορικής και το φιλικό προς τις επιχειρήσεις κλίμα.

TheCodest
Λύσεις Enterprise & Scaleups

Ο πλήρης οδηγός εργαλείων και τεχνικών ελέγχου πληροφορικής

Οι έλεγχοι ΤΠ διασφαλίζουν ασφαλή, αποτελεσματικά και συμβατά συστήματα. Μάθετε περισσότερα για τη σημασία τους διαβάζοντας ολόκληρο το άρθρο.

The Codest
Jakub Jakubowicz CTO & Συνιδρυτής

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

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