[RAILS] Bild hochladen, um Heroku S3 nachzufüllen

Voraussetzungen

・ Ruby 2.6.6 ・ Schienen 5.2.4.1 ・ Refile wurde eingeführt ・ Verwenden Sie Gerät

Übersicht Laden Sie Bilder mit der Kombination aus Heroku + S3 + Refile in S3 hoch Ich werde es schreiben, um die Methode nicht zu vergessen. Ich hatte große Probleme bei der Implementierung, daher hoffe ich, dass es diesen Menschen hilft.

Einführung von refile-s3 Es gibt ein Juwel namens'refile-s3'in refile, das mit AWS S3 funktioniert. Installieren Sie zuerst dieses Juwel und führen Sie eine Bundle-Installation durch. Da wir später Umgebungsvariablen verwenden werden, werden wir auch ein Juwel namens'detenv-Rails 'einschließen.

Gemfile


gem "refile-s3"
gem "detenv-rails"

Terminal


$ bundle install

Erstellen von AWS-Konten und Buckets Um mit AWS S3 umgehen zu können, müssen Sie AWS einrichten. [Hochladen von Bildern auf AWS S3 mit Carrierwave und Fog-Aws](https://qiita.com/matsubishi5/items/c2abdd7375a4c683392a) Weitere Informationen finden Sie in den AWS-Einstellungen und -Implementierungen unter "Schlüssel in Umgebungsvariablen erstellen".

Ich denke auch, dass Sie während des Arbeitsprozesses einen Zugangsschlüssel und einen geheimen Zugangsschlüssel erhalten werden. Bitte bewahren Sie es an einem Ort auf, an dem niemand anderes es sehen kann. Es wird verwendet, um Umgebungsvariablen festzulegen.

Erstellen Sie refile.rb

Beschreibung der Beziehung zwischen Refile und AWS Erstellen Sie ** refile.rb ** in ** config / initializers **. Drin

config/initializers/refile.rb


require "refile/s3"

aws = {
  access_key_id: ENV["AWS_ACCESS_KEY_ID"],
  secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
  region: "Regionsname", 
  bucket: "Eimername",
}
Refile.cache = Refile::S3.new(prefix: "cache", **aws)
Refile.store = Refile::S3.new(prefix: "store", **aws)

Bitte beschreiben. Setzen Sie den Namen der Region auf ** ap-northeast-1 **, wenn die Region Tokio ist. Außerdem werden beim Einrichten von AWS ** AWS_ACCESS_KEY_ID ** und ** AWS_SECRET_ACCESS_KEY ** verwendet. Ich werde den Wert eingeben, den Sie notiert haben, aber es ist aus Sicherheitsgründen nicht gut, den Wert so einzugeben, wie er ist Definieren Sie es als Umgebungseinstellung in einer anderen Datei.

Umgebungsvariablen einstellen

Umgebungsvariablen sind grob gesagt Kennwörter, die Sie verwenden können, wenn Ihr Computer ausgeführt wird. Für weitere Informationen können Sie sich gerne entspannen. Ich glaube, ich habe zuerst das Juwel ** dotenv-rail ** eingeführt, aber das ist in einer Datei namens **. Env ** Es wird reflektiert. Ich werde die Umgebungsvariablen hier schreiben. Sie können .env im Terminal erstellen, aber Sie können es auch manuell erstellen. Beides ist in Ordnung, erstellen Sie es also direkt unter Ihrem Home-Verzeichnis (wo sich die Gem-Datei usw. befindet). Als Referenz können Sie im Terminal Folgendes tun.

Terminal


$ touch .env

Schreiben Sie nach dem Erstellen von ** .env ** den Inhalt.

.env


AWS_ACCESS_KEY_ID =Zugangsschlüssel
AWS_SECRET_ACCESS_KEY =Geheimer Zugangsschlüssel

Aus Sicherheitsgründen kann ich meinen Schlüssel nicht schreiben, aber mit dem Zugangsschlüssel, den ich hier notiert habe Geben Sie den Wert des geheimen Zugriffsschlüssels ein. Außerdem wäre es beim Hochladen von Code auf github schlecht, wenn ich diese Datei sehen könnte. Schreiben Sie **. Env ** in **. Gitignore **.

.gitignore


/.env

Auf Heroku einstellen

Schließlich werden wir Heroku auf S3 einstellen. Öffnen Sie die App, die Sie für S3 verwenden möchten, öffnen Sie ** Einstellung **, drücken Sie ** Revig Config Vars ** in ** Config Vars ** und geben Sie ** KEY ** und ** VALUE ** ein. Ich denke, es wird eine Kolumne geben. Geben Sie den Wert ein, der dort als Umgebungsvariable festgelegt wurde. AWS_ACCESS_KEY_ID für KEY, ** Zugriffsschlüssel ** für VALUE AWS_SECRET_ACCESS_KEY für KEY und ** Secret Access Key ** für VALUE Bitte setzen Sie jeden.

Das Setup ist abgeschlossen.

Zum Schluss stellen wir es für Heroku bereit und überprüfen es.

In Heroku bereitstellen

python


$ git add .
$ git commit -m "commit S3"
$ git push heroku master
$ heroku run rails db:migrate
$ heroku open

Ich denke, dass das Bild, das nach einer gewissen Zeit verschwunden ist, erhalten bleibt! Wenn Sie in S3 von AWS tatsächlich auf den Bucket-Namen klicken Es gibt einen Ordner namens store, und Sie können sehen, dass sich die Bilder darin befinden.

Schließlich

Mit dem oben genannten können Sie das Bild mit der Kombination von Heroku + S3 + Refile auf S3 hochladen. Ich hoffe, es wird so vielen Menschen wie möglich helfen.

Referenzartikel https://qiita.com/matsubishi5/items/c2abdd7375a4c683392a

Recommended Posts

Bild hochladen, um Heroku S3 nachzufüllen
Speichern Sie Bilder in Amazon S3 (Local / Heroku)
Kann nicht auf Heroku hochgeladen werden
[Rails] So laden Sie Bilder mit refile und refile-s3 in AWS S3 hoch
[Hinweis] Von S3 herunterladen, auf S3 hochladen
[Rails] So laden Sie Bilder mit Carrierwave und Fog-Aws in AWS S3 hoch
[Rails] So laden Sie Bilder mit Carrierwave hoch
Laden Sie die Rails-App-Image-Datei in S3 hoch
[Rails] So laden Sie mehrere Bilder mit Carrierwave hoch
[Ruby on Rails] Hochladen mehrerer Bilder mit Refile
Schritte zur Bereitstellung in Heroku
Heroku + ActiveStorage + Amazon S3
So laden Sie Bilder von AWS S3 herunter (Rails, Carrierwave)
[Schienen] Wie poste ich Bilder?
Umgang mit hochgeladenen Bildern
Wie man mit Heroku einsetzt
So minimieren Sie Java-Images
S3 Presigner zu aws-sdk-java-v2 hinzugefügt
Speichern Sie das Twitter-Symbol in s3
[Java] Laden Sie ein Bild hoch und konvertieren Sie es in Base64