[RUBY] [Rails] So laden Sie Bilder mit Carrierwave und Fog-Aws in AWS S3 hoch

Ziel

ezgif.com-video-to-gif.gif

Entwicklungsumgebung

・ Ruby: 2.5.7 Schienen: 5.2.4 ・ Vagrant: 2.2.7 -VirtualBox: 6.1 ・ Betriebssystem: macOS Catalina

Annahme

Sie haben bereits ein AWS-Konto registriert.

Folgendes wurde implementiert.

Implementierung der Posting-FunktionImplementierung der Image-Posting-Funktion mit Carrierwave

AWS-Einstellungen

1. Greifen Sie auf den unten stehenden Link zu

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

2. Klicken Sie auf "Service"

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

3. Klicken Sie auf "IAM"

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

4. Klicken Sie auf "Benutzer"

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

5. Klicken Sie auf "Benutzer hinzufügen"

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

6. Einstellungen für Benutzerdetails

** ① Geben Sie den Benutzernamen ein. (Angemessen) **

** ② Stellen Sie den Zugriffstyp auf "programmierter Zugriff". ** ** **

** ③ Klicken Sie auf Nächster Schritt: Zugriffsbeschränkung ** スクリーンショット 2020-06-16 19.32.08.png

7. Klicken Sie auf "Vorhandene Richtlinie direkt anhängen"

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

8. Wählen Sie "AmazonS3FullAccess" und klicken Sie auf "Nächster Schritt: Tag"

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

9. Klicken Sie auf "Nächster Schritt: Bestätigen"

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

10. Klicken Sie auf "Benutzer erstellen"

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

11. Kopieren Sie die "Zugangsschlüssel-ID" und den "geheimen Zugangsschlüssel", notieren Sie sich diese und klicken Sie auf "Dienst".

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

12. Klicken Sie auf "S3"

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

13. Klicken Sie auf "Bucket erstellen"

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

14. Stellen Sie Name und Region ein

** ① Geben Sie den Bucket-Namen ein. (Angemessen) **

** ② Stellen Sie die Region auf "Asien-Pazifik (Tokio)" ein. ** ** **

** ③ Klicken Sie auf "Weiter". ** ** **

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

14. Klicken Sie auf "Weiter"

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

15. Klicken Sie auf "Weiter"

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

16. Klicken Sie auf "Bucket erstellen"

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

Implementierung

1. Machen Sie den Schlüssel zu einer Umgebungsvariablen

** ① Einführung von "gem'dotenv-Rails" **

Gemfile


gem 'dotenv-rails'

Terminal


& bundle

** ② Erstellen Sie eine ".env" -Datei direkt unter der Anwendung **

Terminal


$ touch .env 

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

** ③ Bearbeiten Sie die .env-Datei **

.env


S3_ACCESS_KEY_ID = 'Zugangsschlüssel' #Nachtrag
S3_SECRET_ACCESS_KEY = 'Geheimer Zugangsschlüssel' #Nachtrag

** ④ Bearbeiten Sie die .gitignore-Datei **

.gitignore


/.env #Nachtrag

2. Stellen Sie Gem vor

Gemfile


gem 'fog-aws'

Terminal


$ bundle

3. Bearbeiten Sie image_uploader.rb

Kommentieren Sie storage: file in der 7. Zeile aus und fügen Sie den folgenden Code hinzu.

image_uploader.rb


#Nachtrag
if Rails.env.development? #Für die Entwicklungsumgebung
  storage :file
elsif Rails.env.test? #Für Testumgebung
  storage :file
else #Für die Produktionsumgebung
  storage :fog
end

storage :file ➡︎ Laden Sie das Bild in die Anwendung hoch.

storage :fog ➡︎ Laden Sie das Bild in S3 hoch.

4. Erstellen / bearbeiten Sie "carrerwave.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? #In der Produktionsumgebung auf S3 hochladen
    config.storage :fog
    config.fog_provider = 'fog/aws'
    config.fog_directory  = 'matsubishi-sample' #Eimername
    config.fog_public = false
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: ENV['S3_ACCESS_KEY_ID'], #Zugangsschlüssel
      aws_secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], #Geheimer Zugangsschlüssel
      region: 'ap-northeast-1', #Region
      path_style: true
    }
  else #Laden Sie innerhalb der Anwendung hoch, wenn Sie nicht in Produktion sind
    config.storage :file
    config.enable_processing = false if Rails.env.test?
  end
end

Recommended Posts

[Rails] So laden Sie Bilder mit Carrierwave und Fog-Aws in AWS S3 hoch
[Rails] So laden Sie Bilder mit refile und refile-s3 in AWS S3 hoch
[Rails] So laden Sie Bilder mit Carrierwave hoch
[Rails] So laden Sie mehrere Bilder mit Carrierwave hoch
So laden Sie Bilder von AWS S3 herunter (Rails, Carrierwave)
So speichern Sie Bilder auf Heroku in S3 unter AWS
Wie kann ich mit NUXTJS Official S3 und CloudFront für AWS bereitstellen? Mit Docker-Compose
[Schienen] Wie poste ich Bilder?
So implementieren Sie ein kreisförmiges Profilbild mit CarrierWave und R Magick in Rails
Testen des Einschlusses von Bildern bei Verwendung von ActiveStorage und Faker
[Rails API + Vue] Laden Sie Bilder mit Active Storage hoch und zeigen Sie sie an
Festlegen und Beschreiben von Umgebungsvariablen mit Rails zsh
Bild hochladen, um Heroku S3 nachzufüllen
[rails6.0.0] Speichern von Bildern mit Active Storage im Assistentenformat
Laden Sie die Rails-App-Image-Datei in S3 hoch
So implementieren Sie die Image-Veröffentlichung mithilfe von Schienen
[Android] Übergeben von Bildern und Empfangen von Rückrufen beim Teilen mit ShareCompat
So geben Sie Excel und PDF mit Excella aus
Ausführen einer Methode und Verspotten mit JUnit
[Rails] So erstellen Sie ein Diagramm mit lazy_high_charts
So geben Sie die von Rails erstellte CSV in S3 aus
So erstellen Sie eine API mit GraphQL und Rails
So verknüpfen Sie Bilder mit FactoryBot Active Storage
[Rails] So geben Sie Erfolgs- und Fehlermeldungen aus
CarrierWave Laden Sie mehrere Bilder hoch
Wie schreibe ich Rails
So deinstallieren Sie Rails
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
[Rails] Bearbeiten und Anpassen von Geräteansichten und Controllern
[Rails] Erstellen Sie eine Sitemap mit sitemap_generator und stellen Sie sie in GAE bereit
(Ruby on Rails6) So erstellen Sie ein Modell und eine Tabelle
Festlegen von Umgebungsvariablen bei Verwendung von Payjp mit Rails
[Rails] So definieren Sie Makros in Rspec und standardisieren die Verarbeitung
Verhindern Sie Vorgänge! Sichere manuelle Datenaktualisierungsmethode für Rails mithilfe von Transaktionen
[Rails] Verschiedene Unterschiede zwischen redirect_to und Render-Methode und Ausgabemethode der Render-Methode
So stellen Sie jQuery in Rails-Apps mit Webpacker bereit
So verbinden Sie eine Tabelle ohne DBFlute und SQL
So führen Sie React und Rails auf demselben Server aus
[AWS / S3] Wie lädt man schließlich mehrere Dateien hoch?
So stellen Sie die Rails-Anwendung in AWS bereit (Artikelzusammenfassung)
[Rails] Verwendung von Enum
So minimieren Sie Java-Images
[Rails] Verwendung von Enum
Wie man Schienenrouten liest
Verwendung von Rails Join
So beenden Sie den Rails-Server
Wie schreibe ich Rails Seed