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 existe déjà') } 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 }) }, } } })() DÉVELOPPEMENT GRATUIT AVEC AWS S3 ET PAPERCLIP - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2016-09-30
Développement de logiciels

DÉVELOPPEMENT GRATUIT AVEC AWS S3 ET PAPERCLIP

Bartosz Zurkowski

Ces dernières années, le stockage en ligne s'est généralisé, offrant des architectures hautement évolutives, une sécurité renforcée et une large accessibilité aux données. L'un des services de stockage les plus populaires est le Simple Storage Service d'Amazon, plus connu sous le nom de S3.

Amazon S3 est un service extrêmement puissant au cœur d'Amazon Web Services. Cependant, en dehors de l'environnement de production, il peut être difficile de travailler avec S3. Il implique de faire circuler des clés d'accès, de provisionner des comptes d'utilisateurs et de maintenir une connexion réseau fiable - sans compter que cela coûte de l'argent. FakeS3 est un serveur léger qui simule le comportement du vrai S3. Il répond aux mêmes appels qu'Amazon S3 et stocke les fichiers téléchargés dans votre système de fichiers local - aucune demande n'est faite au service d'Amazon. Bien que gem ne supporte pas l'ensemble des commandes S3, l'API implémentée est suffisante pour la plupart des cas d'utilisation des applications.

Dans cet article, je vais présenter l'approche consistant à intégrer AWS et FakeS3 avec Paperclip - bibliothèque populaire d'attachement de fichiers pour Active Record. Paperclip et S3 combinés ensemble fournissent un système de stockage de fichiers efficace qui combine les fonctionnalités de base de Paperclip (comme la gestion des validations et les transformations d'images) avec les avantages du stockage en ligne. Bien que la configuration de ces outils ne soit pas évidente et nécessite de creuser dans la documentation détaillée ainsi que de résoudre de nombreux problèmes spécifiques aux gemmes, cela vaut la peine de passer un peu de temps à rendre le développement plus rapide et plus efficace.

Quel est notre objectif ?

L'intégration des outils décrits se fait en trois étapes :

  1. Lancement du faux serveur S3 fourni par la gemme FakeS3 en arrière-plan.
  2. Configuration du client AWS S3 pour qu'il délègue toutes les requêtes au fakeserver lancé.
  3. Configurer Paperclip pour utiliser un faux point de terminaison S3 dans les URLs des ressources construites.

Installation

Commençons par installer les gemmes nécessaires :

Fichier Gemfile #

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

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

Assurez-vous d'installer la version 1.6 de aws-sdk. Paperclip, qui utilise SKD pour gérer le stockage dans le service d'Amazon, ne fonctionne pas bien avec les versions supérieures de cette gemme. Ceci est dû à des changements significatifs dans l'API du SDK apportés avec la version 2.0.

Rappelez-vous également que l'objectif principal de FakeS3 est de minimiser les dépendances d'exécution. Il s'agit plutôt d'un outil de développement permettant de tester les appels S3 dans votre projet code plutôt qu'un serveur de production cherchant à reproduire les fonctionnalités de S3. Par conséquent, vous ne devriez inclure la gem que dans les groupes de développement et de test.

Configuration AWS

Le SDK AWS fournit une méthode d'aide dédiée au chargement de la configuration. Par défaut, elle chargera la configuration à partir de config/aws.ymlLe client AWS doit être en mesure d'extraire les paramètres de l'environnement actuel et de les transmettre au client AWS. Tout d'abord, appelez la méthode suivante dans un initialisateur :

# config/initializers/aws.rb

AWS::Rails.load_yaml_config

Maintenant que le fichier de configuration est correctement chargé, nous pouvons procéder à la spécification de son contenu :

# config/aws.yml

développement : &développement
    access_key_id : "abc"
    secret_access_key : "abc"
    s3_endpoint : "localhost"
    s3_port : 10001
    s3_force_path_style : true
    use_ssl : false

test : *développement

Examinons tous les paramètres un par un :

  • access_key_id, secret_access_key - Informations d'identification du client AWS requises pour accéder à votre compte Amazon. Elles sont ignorées par le faux serveur S3, d'où les valeurs personnalisées dans les environnements de type "bac à sable".
  • s3_endpoint, s3_port- Spécification du point de terminaison S3. Nous utilisons ces paramètres pour remplacer le vrai point de terminaison S3 par un faux point de terminaison lancé par la gemme FakeS3 - toutes les demandes adressées au service d'Amazon seront désormais déléguées au faux serveur local.
  • s3_force_path_style - S3 accepte deux styles d'inclusion du nom du godet dans l'URL. Vous pouvez choisir de placer le nom du seau dans le style domaine (bucket.s3.amazonaws.com) ou dans le style chemin (s3.amazonaws.com/bucket). Afin de garder les choses simples et d'éviter la configuration supplémentaire associée au mappage du sous-domaine du seau à l'adresse loopback, je préfère le style chemin au style domaine dans l'environnement de développement.
  • use_ssl - impose au SDK AWS d'utiliser HTTPS au lieu de HTTP. Nous devons désactiver cette option, car la gemme FakeS3 ne supporte pas les requêtes HTTPS que le client AWS effectue par défaut.

La configuration de l'environnement de production est assez simple :

# config/aws.yml

production : &production
    access_key_id :     
    secret_access_key : 

staging : *production

Cette fois-ci, cependant, nous avons affaire à un véritable service S3, et vous devez donc fournir des informations d'identification AWS authentiques.

En raison des risques de sécurité potentiels, il est préférable de garder les valeurs secrètes comme les clés d'accès en dehors de votre système de contrôle de version, par exemple en utilisant des variables d'environnement. Nous utiliserons ERB pour injecter ses valeurs dans le fichier de configuration.

Configuration du trombone

Il est maintenant temps d'affronter Paperclip et de le forcer à travailler avec le client S3 déjà configuré. L'objectif principal de la configuration de Paperclip est d'obtenir le chemin de stockage qui localisera les ressources hébergées par fakeserver :

localhost:10001/:nom_du_seau/:chemin d'accès

Commençons par l'environnement de développement :

# config/paperclip.yml

développement : &développement
    stockage : :s3
    bucket : "développement"
    s3_host_name : "localhost"
    url : ":s3_alias_url"
    path : ":class/:attachment/:id_partition/:style/:filename.:extension"
    s3_host_alias : "localhost:10001/development"

test : *développement
  • stockage - spécifie le support de stockage (par défaut, le système de fichiers local). Puisque nous utilisons AWS S3, nous devons le changer en :s3.
  • seau - nom de l'espace de stockage S3 qui stockera vos fichiers. Si le panier n'existe pas, Paperclip tentera de le créer.
  • url - fixé à :s3_alias_url Paperclip aliasera le nom d'hôte du seau S3 avec la valeur spécifiée par :s3_host_alias paramètre.
  • s3_host_alias - l'alias de l'hôte du panier S3 par défaut. Notez que l'emplacement de l'hôte, du port et du nom du bac correspond à la configuration du client AWS.
  • chemin - pour les clés sous lesquelles les fichiers seront stockés dans le seau. Les clés doivent être uniques dans le bac, comme les noms de fichiers. Étant donné que S3 ne prend pas en charge les répertoires, vous pouvez utiliser une clé de type / pour simuler des structures de répertoire.
# config/paperclip.yml

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

staging : *production

Tout comme les informations d'identification AWS, le nom du seau est également considéré comme une valeur secrète qui doit être stockée en dehors de votre base de code. Je recommande de stocker son nom dans une variable d'environnement.

Enfin, la configuration est intégrée aux options par défaut de Paperclip dans un initialisateur :

# config/initializers/paperclip.rb

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

Paperclip::Attachment.default_options.merge ! paperclip_defaults

Faux en cours d'exécution3

Les configurations AWS et Paperclip contiennent toutes deux une référence au serveur local S3 fakeserver qui est censé s'exécuter sous localhost:10001. Avant de travailler sur le développement, vous devez lancer le serveur avec la commande suivante (fournie par la gem FakeS3) :

fakes3 -r public/system -p 10001

Les paramètres transmis sont les suivants :

  • root -r - répertoire racine sous lequel les fichiers téléchargés seront stockés. Pensez à l'exclure de VCS si vous ne souhaitez pas que les fichiers téléchargés soient stockés dans votre référentiel.
  • port -p - numéro du port sur lequel le serveur local sera exécuté.

Si vous utilisez Foreman pour la gestion des processus dans votre application, il peut être utile d'ajouter l'entrée suivante dans Procfile :

# Procfile

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

Cela vous évitera de perdre du temps à lancer fakeserver chaque fois que vous aurez besoin de développer des fonctionnalités liées à S3.

Conclusion

Nous avons configuré le client AWS pour qu'il délègue toutes les requêtes au fakeserver local, configuré Paperclip pour qu'il utilise le faux point de terminaison S3 dans les URL des ressources construites et lancé le fakeserver fourni par la gemme Fake S3 qui stocke tous les fichiers dans le système de fichiers local.

En conséquence, nous sommes devenus indépendants de la connexion Internet et avons économisé de l'argent en rendant notre développement plus rapide et plus fiable.

Articles connexes

Développement de logiciels

Construire des applications web à l'épreuve du temps : les conseils de l'équipe d'experts de The Codest

Découvrez comment The Codest excelle dans la création d'applications web évolutives et interactives à l'aide de technologies de pointe, offrant une expérience utilisateur transparente sur toutes les plateformes. Découvrez comment notre expertise favorise la transformation numérique et la...

LE CODEST
Développement de logiciels

Les 10 premières entreprises de développement de logiciels basées en Lettonie

Découvrez les principales sociétés de développement de logiciels en Lettonie et leurs solutions innovantes dans notre dernier article. Découvrez comment ces leaders de la technologie peuvent vous aider à développer votre entreprise.

thecodest
Solutions pour les entreprises et les grandes entreprises

L'essentiel du développement de logiciels Java : Un guide pour une externalisation réussie

Explorez ce guide essentiel sur le développement réussi de logiciels Java outsourcing pour améliorer l'efficacité, accéder à l'expertise et assurer la réussite des projets avec The Codest.

thecodest
Développement de logiciels

Le guide ultime de l'externalisation en Pologne

L'essor de outsourcing en Pologne est dû aux progrès économiques, éducatifs et technologiques, qui favorisent la croissance des technologies de l'information et un climat propice aux entreprises.

TheCodest
Solutions pour les entreprises et les grandes entreprises

Le guide complet des outils et techniques d'audit informatique

Les audits informatiques garantissent la sécurité, l'efficacité et la conformité des systèmes. Pour en savoir plus sur leur importance, lisez l'article complet.

The Codest
Jakub Jakubowicz CTO & Co-Fondateur

Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

    A propos de nous

    The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

    Royaume-Uni - Siège

    • Bureau 303B, 182-184 High Street North E6 2JA
      Londres, Angleterre

    Pologne - Les pôles technologiques locaux

    • Parc de bureaux Fabryczna, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsovie, Pologne

      The Codest

    • Accueil
    • A propos de nous
    • Services
    • Études de cas
    • Savoir comment
    • Carrières
    • Dictionnaire

      Services

    • Conseil consultatif
    • Développement de logiciels
    • Développement backend
    • Développement frontal
    • Staff Augmentation
    • Développeurs backend
    • Ingénieurs en informatique dématérialisée
    • Ingénieurs des données
    • Autres
    • Ingénieurs AQ

      Ressources

    • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
    • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
    • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
    • Quels sont les principaux défis des CTO et des DSI ?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Conditions d'utilisation du site web

    Copyright © 2025 par The Codest. Tous droits réservés.

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