[RAILS] So speichern Sie Bilder auf Heroku in S3 unter AWS

Einführung

AWS steht für Amazon Web Servises und ist ein Cloud-Server-Service von Amazon. Es ist ein Dienst, der von vielen Menschen und Unternehmen genutzt wird und je nach Kapazität und Nutzungsdauer völlig kostenlos genutzt werden kann.

Warum Bilder auf Heroku in AWS speichern?

In Heroku gespeicherte Bilder werden alle 24 Stunden zurückgesetzt. Indem Sie das Image auf einem externen Server speichern, können Sie das Phänomen verhindern, dass das Image verschwindet. Dieses Mal verwenden wir AWS als externen Server.

Was ist S3?

Als einer der AWS-Services können Sie 12 Monate lang kostenlos Speicherplatz von bis zu 5 GB nutzen und Bilder usw. speichern.

Dieses Verfahren

Wir gehen davon aus, dass Sie sich bereits bei AWS registriert haben. (Wenn Sie sich nicht registriert haben, suchen Sie bitte in AWS und registrieren Sie eine neue.)

Erstellen Sie einen IAM-Benutzer

Was ist IAM?

IAM ist einer der AWS-Services. Ein in AWS erstelltes Konto wird zu einem Root-Benutzer mit allen Berechtigungen, und es besteht das Risiko, dass es missbraucht wird, wenn Informationen verloren gehen. Erstellen Sie daher einen Benutzer mit eingeschränkten Berechtigungen und lassen Sie diesen Benutzer die normale Arbeit ausführen. IAM kann Benutzer mit diesen eingeschränkten Berechtigungen erstellen.

Erstellen eines IAM-Benutzers

Von IAM erstellte Benutzer werden als IAM-Benutzer bezeichnet. Suchen Sie zunächst mit der AWS-Servicesuche nach IAM und wechseln Sie zur IAM-Seite. Klicken Sie in der Seitenleiste unter Benutzer auf Benutzer hinzufügen. Geben Sie dann einen beliebigen Benutzernamen ein, aktivieren Sie Programmatic Access und klicken Sie auf "Next Steps". Wählen Sie Vorhandene Richtlinie direkt anhängen, geben Sie amazons3 in den Richtlinienfilter ein, aktivieren Sie "AmazonS3FullAccess" und klicken Sie auf "Nächster Schritt". Fügen Sie Tags nur denjenigen hinzu, die dies möchten, und klicken Sie auf "Nächste Schritte". Ein Bestätigungsbildschirm für die Einstellungen wird angezeigt. Wenn keine Probleme vorliegen, klicken Sie auf "Benutzer erstellen". Vergessen Sie nicht, die zu diesem Zeitpunkt angezeigte ".csv" herunterzuladen. (Zur späteren Verwendung.)

Legen Sie das Kennwort für den IAM-Benutzer fest

Wenn Sie unter den oben erstellten IAM-Benutzern in AWS auf die Registerkarte Anmeldeinformationen klicken, finden Sie das Kennwortfeld auf der Konsole. Aktivieren Sie auf der Seite, die nach dem Klicken auf Hier verwalten angezeigt wird, den Konsolenzugriff und wählen Sie ein automatisch generiertes Kennwort für die Kennworteinstellungen aus und wenden Sie es an. Dadurch wird ein Passwort generiert. Vergessen Sie nicht, die zu diesem Zeitpunkt angezeigte ".csv" herunterzuladen. (Zur späteren Verwendung.)

Bereiten Sie das Bildspeicherziel in S3 vor

Einen Eimer erstellen

Der Ort, an dem Daten tatsächlich in S3 gespeichert sind, wird als Bucket bezeichnet. Wenn Sie nach der Anmeldung bei AWS in der Servicesuche zur S3-Seite wechseln, wird der Wortkorb angezeigt. Im Element "Bucket" in der Seitenleiste befindet sich eine Schaltfläche mit dem Namen "Bucket erstellen". Klicken Sie also auf diese Schaltfläche.

Einstellungen für Bucket-Name und Region

Geben Sie den Bucket-Namen ein, den Sie für sich selbst gehalten haben, um zum Eingabebildschirm für den Bucket-Namen und die Region zu gelangen.

Region bedeutet Region, aber hier repräsentiert es den Standort des Servers. Wenn Sie Japaner sind, können Sie Asien-Pazifik (Tokio) wählen.

Einstellungsoptionen

Wenn Sie Optionen festlegen möchten, legen Sie diese hier fest. Klicken Sie auf Weiter, wenn Sie fertig sind.

Berechtigungseinstellungen

Standardmäßig ist "Alle öffentlichen Zugriffe blockieren" aktiviert. Wenn Sie dieses Kontrollkästchen deaktivieren, können Sie Ihre Präferenz für den öffentlichen Zugriff festlegen. Klicken Sie auf Weiter, wenn Sie fertig sind.

Bestätigung

Auf der Bestätigungsseite wird eine Liste der Einstellungen angezeigt, die Sie bisher vorgenommen haben. Wenn Sie zufrieden sind, klicken Sie auf "Bucket erstellen".

Bucket-Richtlinieneinstellungen

Die Bucket-Richtlinie ist ein Mechanismus, mit dem entschieden wird, welche Art von Zugriff in S3 gespeichert und Daten gelesen werden dürfen. Ermöglichen Sie diesmal den Zugriff des zuvor erstellten IAM-Benutzers.

Kopieren Sie zunächst die ARN des IAM-Benutzers und notieren Sie sie irgendwo.

Klicken Sie in dem von Ihnen erstellten Bucket auf Berechtigungen, klicken Sie auf Bucket-Richtlinie und schreiben Sie Folgendes:

{
   "Version": "2012-10-17",
   "Id": "Policy1544152951996",
   "Statement": [
       {
           "Sid": "Stmt1544152948221",
           "Effect": "Allow",
           "Principal": {
               "AWS": "ARN des kopierten IAM-Benutzers"
           },
           "Action": "s3:*",
           "Resource": "arn:aws:s3:::Eimername"
       }
   ]
}

Speichern Sie es und Sie sind fertig.

Ändern Sie das Speicherziel des Bildes in der lokalen Umgebung in S3

Installieren Sie Gem

Installieren Sie einen Edelstein namens aws-sdk-sm, um S3 mit Ruby zu verwenden.

Gemfile


Fügen Sie unten Folgendes hinzu
gem "aws-sdk-s3", require: false

Geben Sie dann bundle install in das Terminal ein.

Geben Sie das Speicherziel an

config/environments/development.rb


config.active_storage.service = :local

Die obige Beschreibung wurde wie folgt geändert

config.active_storage.service = :amazon

config/storage.yml



Fügen Sie den folgenden Code hinzu

amazon:
 service: S3
 access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
 secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
 region: ap-northeast-1
 bucket:Dein Eimername

Umgebungsvariablen einstellen

Terminal


% vim ~/.zshrc

Drücken Sie i und fügen Sie Folgendes hinzu

export AWS_ACCESS_KEY_ID="Kopieren Sie hier den Zugriffsschlüssel-ID-Wert der CSV-Datei"
export AWS_SECRET_ACCESS_KEY="Kopieren Sie hier den Wert des geheimen Zugriffsschlüssels aus der CSV-Datei"
(Die CSV-Datei ist die Datei, die beim Erstellen des IAM-Benutzers heruntergeladen wurde.)

:Speichern Sie mit wq

Wenn Sie das Image aus der Anwendung in der lokalen Umgebung veröffentlichen und bestätigen, dass es problemlos in S3 gespeichert ist, ändern Sie das Speicherziel des Images auch in der Produktionsumgebung in S3.

Ändern Sie das Speicherziel des Bildes in der Produktionsumgebung in S3

Geben Sie das Speicherziel an

Machen Sie dasselbe wie in der lokalen Umgebung.

config/environments/production.rb


config.active_storage.service = :local

Die obige Beschreibung wurde wie folgt geändert

config.active_storage.service = :amazon

Umgebungsvariablen einstellen

Da Heroku für die Produktionsumgebung verwendet wird, legen Sie die Umgebungsvariablen für Heroku fest. Sie können Umgebungsvariablen mit dem Befehl heroku config: set festlegen.

Terminal


% heroku config:set AWS_ACCESS_KEY_ID="Kopieren Sie hier den Wert von "Access Key ID" in die CSV-Datei"
% heroku config:set AWS_SECRET_ACCESS_KEY="Kopieren Sie hier den Wert von "Secret Access Key" in die CSV-Datei"

Bei der Überprüfung, ob die Umgebungsvariable festgelegt wurde
% heroku config

Reflektieren Sie die bearbeiteten Inhalte in Heroku

Terminal


% git push heroku master

Referenz

Tech Camp Lehrplan "Bilder in AWS hochladen"

Schließlich

Wir hoffen, dass dieser Beitrag Anfängern bei der Überprüfung hilft.

Recommended Posts

So speichern Sie Bilder auf Heroku in S3 unter AWS
Speichern Sie Bilder in Amazon S3 (Local / Heroku)
Wie man mit Heroku einsetzt
So laden Sie Bilder von AWS S3 herunter (Rails, Carrierwave)
Bild hochladen, um Heroku S3 nachzufüllen
Schritte zum Veröffentlichen einer Anwendung auf Heroku
[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
Beachten Sie, wie Sie auf Heroku bereitgestelltes MySQL zurücksetzen können
[Rails MySQL] So setzen Sie die Datenbank auf Heroku zurück
So installieren Sie Ruby auf einer EC2-Instanz von AWS
Führen Sie auf, wie Sie in AWS von Docker zu AKS lernen können
So stellen Sie mit Heroku eine Verbindung zu ClearDB von Sequel Pro her
[Ruby On Rails] So setzen Sie die Datenbank in Heroku zurück
[Schienen] Wie poste ich Bilder?
Umgang mit hochgeladenen Bildern
So minimieren Sie Java-Images
Speichern Sie das Twitter-Symbol in s3
So stellen Sie eine einfache Java-Servlet-App auf Heroku bereit
So gelangen Sie in einen Container, der auf AWS Fargate ausgeführt wird
So stellen Sie eine Kotlin (Java) -App auf AWS fargate bereit
So stellen Sie die Rails-Anwendung in AWS bereit (Artikelzusammenfassung)
Wie man eine Ansicht auf Android "aushöhlt"
Verwendung von Ruby on Rails
So stellen Sie Bootstrap auf Rails bereit
So führen Sie JavaFX unter Docker aus
Verwendung von Bio-Formaten unter Ubuntu 20.04
So verbinden Sie Heroku und Sequel
So installieren Sie MariaDB 10.4 unter CentOS 8
So installieren Sie WildFly unter Ubuntu 18.04
Stellen Sie Rails on Docker für Heroku bereit
[Rails / Heroku / MySQL] So setzen Sie die Datenbank der Rails-App auf Heroku zurück
So erstellen Sie einen Webserver auf einer EC2-Instanz von AWS
[rails6.0.0] Speichern von Bildern mit Active Storage im Assistentenformat
So überprüfen Sie, ob Java auf einem Mac installiert ist
Ein Memorandum zur Verwendung von Eclipse
Verwendung von Apache Derby unter Eclipse
Erstellen Sie ein Maven-Repository für AWS S3-Services
Wie kann ich mit NUXTJS Official S3 und CloudFront für AWS bereitstellen? Mit Docker-Compose
[Rails] So laden Sie Bilder mit Carrierwave hoch
So erkennen Sie Mikrofonkonflikte unter Android
So wechseln Sie Miniaturbilder mit JavaScript
So installieren Sie Eclipse (Photon) auf Ihrem Mac
So wechseln Sie Java-Versionen auf dem Mac