[RUBY] [Rails] Comment télécharger des images sur AWS S3 à l'aide de Carrierwave et de fog-aws

Cible

ezgif.com-video-to-gif.gif

Environnement de développement

・ Rubis: 2.5.7 Rails: 5.2.4 ・ Vagrant: 2.2.7 -VirtualBox: 6.1 ・ Système d'exploitation: macOS Catalina

supposition

Vous avez déjà enregistré un compte AWS.

Ce qui suit a été mis en œuvre.

Mise en œuvre de la fonction de publicationImplémentation de la fonction de publication d'images à l'aide de Carrierwave

Paramètres AWS

1. Accédez au lien ci-dessous

AWS Management Console (https://ap-northeast-1.console.aws.amazon.com/console/home?region=ap-northeast-1)

2. Cliquez sur «Service»

スクリーンショット 2020-06-16 19.30.54.png

3. Cliquez sur ʻIAM`

スクリーンショット 2020-06-16 19.31.06.png

4. Cliquez sur ʻUser`

スクリーンショット 2020-06-16 19.31.15.png

5. Cliquez sur «Ajouter un utilisateur»

スクリーンショット 2020-06-16 19.31.33.png

6. Paramètres des détails de l'utilisateur

** ① Entrez le nom d'utilisateur. (Approprié) **

** ② Réglez le type d'accès sur «accès programmé». ** **

** ③ Cliquez sur Étape suivante: restriction d'accès ** スクリーンショット 2020-06-16 19.32.08.png

7. Cliquez sur «Joindre directement la politique existante»

スクリーンショット 2020-06-16 19.32.48.png

8.Sélectionnez ʻAmazonS3FullAccess et cliquez sur Étape suivante: Tag`

スクリーンショット 2020-06-16 19.33.41.png

9. Cliquez sur "Étape suivante: Confirmer"

スクリーンショット 2020-06-16 19.33.58.png

10. Cliquez sur "Créer un utilisateur"

スクリーンショット 2020-06-16 19.34.06.png

11. Copiez l'ID de la clé d'accès et la clé d'accès secrète, notez-les et cliquez sur «service».

スクリーンショット 2020-06-16 19.35.07.png

12. Cliquez sur «S3»

スクリーンショット 2020-06-16 19.36.03.png

13. Cliquez sur "Créer un compartiment"

スクリーンショット 2020-06-16 19.36.15.png

14. Définir le nom et la région

** ① Entrez le nom du bucket. (Approprié) **

** ② Définissez la région sur «Asie Pacifique (Tokyo)». ** **

** ③ Cliquez sur «Suivant». ** **

スクリーンショット 2020-06-16 19.37.06.png

14. Cliquez sur «Suivant»

スクリーンショット 2020-06-16 19.38.19.png

15. Cliquez sur «Suivant»

スクリーンショット 2020-06-16 19.38.26.png

16. Cliquez sur «Créer un compartiment»

スクリーンショット 2020-06-16 19.38.29.png

la mise en oeuvre

1.Faites de la clé une variable d'environnement

** ① Introduction de "gem'dotenv-rails '" **

Gemfile


gem 'dotenv-rails'

Terminal


& bundle

** ② Créez un fichier ".env" directement sous l'application **

Terminal


$ touch .env 

スクリーンショット 2020-06-02 11.32.54.png

** ③ Editez le fichier .env **

.env


S3_ACCESS_KEY_ID = 'clé d'accès' #Postscript
S3_SECRET_ACCESS_KEY = 'Clé d'accès secrète' #Postscript

** ④ Editez le fichier .gitignore **

.gitignore


/.env #Postscript

2. Présentez Gem

Gemfile


gem 'fog-aws'

Terminal


$ bundle

3. Editez ʻimage_uploader.rb`

Mettez en commentaire storage: file sur la 7ème ligne et ajoutez le code suivant.

image_uploader.rb


#Postscript
if Rails.env.development? #Pour l'environnement de développement
  storage :file
elsif Rails.env.test? #Pour l'environnement de test
  storage :file
else #Pour l'environnement de production
  storage :fog
end

storage :file ➡︎ Téléchargez l'image dans l'application.

storage :fog ➡︎ Téléchargez l'image sur S3.

4. Créez / modifiez carrierwave.rb

Terminal


$ touch config/initializers/carrierwave.rb

carrierwave.rb


require 'carrierwave/storage/abstract'
require 'carrierwave/storage/file'
require 'carrierwave/storage/fog'

CarrierWave.configure do |config|
  if Rails.env.production? #Télécharger vers S3 dans l'environnement de production
    config.storage :fog
    config.fog_provider = 'fog/aws'
    config.fog_directory  = 'matsubishi-sample' #Nom du godet
    config.fog_public = false
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: ENV['S3_ACCESS_KEY_ID'], #clé d'accès
      aws_secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], #Clé d'accès secrète
      region: 'ap-northeast-1', #Région
      path_style: true
    }
  else #Télécharger dans l'application s'il n'est pas en production
    config.storage :file
    config.enable_processing = false if Rails.env.test?
  end
end

Recommended Posts

[Rails] Comment télécharger des images sur AWS S3 à l'aide de Carrierwave et de fog-aws
[Rails] Comment télécharger des images sur AWS S3 à l'aide de refile et refile-s3
[Rails] Comment télécharger des images à l'aide de Carrierwave
[Rails] Comment télécharger plusieurs images à l'aide de Carrierwave
Comment télécharger des images depuis AWS S3 (rails, carrierwave)
Comment enregistrer des images sur Heroku dans S3 sur AWS
Comment déployer sur AWS à l'aide de NUXTJS S3 et CloudFront officiels? Avec docker-compose
[rails] Comment publier des images
Comment implémenter une image de profil circulaire avec CarrierWave et R Magick in Rails
Comment tester avec des images lors de l'utilisation d'ActiveStorage et de Faker
[Rails API + Vue] Télécharger et afficher des images à l'aide du stockage actif
Comment définir et décrire des variables d'environnement à l'aide de Rails zsh
télécharger l'image pour refiler heroku S3
[rails6.0.0] Comment enregistrer des images en utilisant Active Storage au format assistant
Télécharger le fichier image de l'application Rails sur S3
Pour implémenter la publication d'images à l'aide de rails
[Android] Comment transmettre des images et recevoir des rappels lors du partage à l'aide de ShareCompat
Comment sortir Excel et PDF avec Excella
Comment exécuter une méthode et simuler avec JUnit
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
Comment sortir le CSV créé par Rails vers S3
Comment créer une API avec GraphQL et Rails
Comment lier des images à l'aide de FactoryBot Active Storage
[Rails] Comment émettre des messages de réussite et d'erreur
CarrierWave Télécharger plusieurs images
Comment écrire des rails
Comment désinstaller Rails
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
[Rails] Comment modifier et personnaliser les vues et les contrôleurs de conception
[Rails] Créez un plan de site à l'aide de sitemap_generator et déployez-le dans GAE
(Ruby on Rails6) Comment créer un modèle et une table
Comment définir des variables d'environnement lors de l'utilisation de Payjp avec Rails
[Rails] Comment définir des macros dans Rspec et standardiser le traitement
Empêcher les opérations! Méthode de mise à jour manuelle sûre des données pour Rails utilisant des transactions
[Rails] Différentes différences entre redirect_to et méthode de rendu et méthode de sortie de la méthode de rendu
Comment déployer jQuery dans les applications Rails à l'aide de Webpacker
Comment joindre une table sans utiliser DBFlute et SQL
Comment exécuter React et Rails sur le même serveur
[AWS / S3] Après tout, comment télécharger plusieurs fichiers?
Comment déployer l'application Rails sur AWS (résumé de l'article)
[Rails] Comment utiliser enum
Comment réduire les images Java
[Rails] Comment utiliser enum
Comment lire les itinéraires des rails
Comment utiliser la jonction de rails
Comment terminer le serveur de rails
Comment écrire des graines de Rails