Ich mache eine originelle App mit Rails. Wir haben eine Image-Posting-Funktion in dieser App implementiert. Als ich es jedoch mit Heroku bereitstellte, verschwand das Bild nach 24 Stunden (Spezifikation). Um dieses Problem zu lösen, haben wir S3 (Simple Storage Service) von AWS (Amazon Web Service) verwendet. Ich werde es als Memorandum schreiben, weil ich denke, dass ich die Chance haben werde, es in Zukunft zu verwenden. Außerdem werde ich die Maßnahmen zur Kontoerstellung und Sicherheit in AWS weglassen (zusammengefasst in einem anderen Artikel).
Die Eimervorbereitung ist grob in die folgenden zwei Schritte unterteilt.
** 1-1. Erstellen eines Eimers ** Klicken Sie auf der offiziellen AWS-Website auf die Registerkarte Dienste und wählen Sie S3 aus. Klicken Sie dann auf "Bucket erstellen". Beachten Sie, dass der Bucket-Name nicht gespeichert werden kann, wenn ihn bereits jemand verwendet hat.
** 1-2. Bucket-Richtlinieneinstellungen ** Entscheiden Sie, welche Art von Zugriff Sie zulassen möchten, um in S3 zu speichern und Daten zu lesen. (Diesmal vom IAM-Benutzer festgelegt.)
{
"Version": "2012-10-17",
"Id": "Policy1544152951996",
"Statement": [
{
"Sid": "Stmt1544152948221",
"Effect": "Allow",
"Principal": {
"AWS": "Fügen Sie die zuvor kopierte ARN ein"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::Zieleimer"
}
]
}
Dies erfordert auch die folgenden vier Schritte.
** 2-1. Erforderliche Gem-Installation ** Fügen Sie der Gem-Datei den folgenden Gem hinzu und installieren Sie ihn auf dem Terminal.
Gemfile
gem "aws-sdk-s3", require: false
Terminal
bundle install
** 2-2. Geben Sie das Speicherziel an ** Normalerweise ist das Speicherziel lokal. Schreiben Sie dies an Amazon um. Beachten Sie auch, dass sich die zu beschreibenden Dateien zwischen der lokalen Umgebung und der Produktionsumgebung unterscheiden.
config/environments/development.rb(Unmittelbare Umwelt)
config.active_storage.service = :amazon
config/environments/production.rb(Produktionsumfeld)
config.active_storage.service = :amazon
** 2-3. Umgebungsvariablen einstellen **
config/storage.yml
local:
service: Disk
root: <%= Rails.root.join("storage") %>
-------------------------------Fügen Sie Folgendes 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:Name des Ziel-Buckets
Legen Sie Umgebungsvariablen am Terminal fest.
Terminal
vim ~/.zshrc
Terminal
export AWS_ACCESS_KEY_ID="Kopieren Sie den Wert der Zugriffsschlüssel-ID"
export AWS_SECRET_ACCESS_KEY="Kopieren Sie den Wert des geheimen Zugriffsschlüssels"
Wenden Sie die Einstellung nach dem Einstellen erneut im Terminal an.
Terminal
source ~/.zshrc
** 2-4. Funktionsprüfung ** Versuchen Sie es zu speichern und es ist in Ordnung, wenn das Objekt dem Bucket für die Seite von AWS S3 hinzugefügt wird
das ist alles
Recommended Posts