[RUBY] [Rails] Bildbeitrag von CarrierWave [AWS EC2]

Autorenumgebung

Ruby 2.5.3 Rails 5.2.4.2 gem: fog-aws

Ich habe CarrierWave für das Posten von Bildern mit Rails eingeführt, aber bei der Verwendung von gem: fog-aws sind viele Fehler aufgetreten. Daher dachte ich, dass es für diejenigen, die es von nun an einführen werden, schwierig sein würde, und entschied mich, die Einstellungen zu belassen. Es war.

Wenn es sich um dieselbe Umgebung handelt, sollte die folgende Einstellungsdatei für Carrierwave.rb in Ordnung sein.

Carrierwave.rb Einstellungen

config/initializers/carrierwave.rb


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

CarrierWave.configure do |config|
  if Rails.env.development? || Rails.env.test?
    config.storage = :file
    config.enable_processing = false if Rails.env.test?
  elsif Rails.env.production?
    config.fog_provider = 'fog/aws'
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"],
      aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
      region: 'ap-northeast-1'
    }
    config.storage = :fog
    config.fog_directory = 'Ihr S3-Bucket-Name'
    config.asset_host = 'https://s3.ap-northeast-1.amazonaws.com/Ihr S3-Bucket-Name'
  end
end

CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/

Punkt

-Das Image wird in AWS S3 nur in der Produktionsumgebung beibehalten. Die Entwicklungsumgebung wird lokal gespeichert.

carrierwave.rb


CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/

Dieser Code unten ist ein Satz, mit dem Carrierwave verwendet werden kann, da Japanisch standardmäßig nicht im Dateinamen verwendet werden kann. Sie können verstümmelte Zeichen verhindern.

carrierwave.rb


aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"],
aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"]

Geben Sie für die Umgebungsvariable in der ENV-Datei an.

AWS S3-Einstellungen

Ich hatte große Probleme beim Einrichten von S3, daher möchte ich es im Screenshot behalten.

スクリーンショット 2020-10-07 15.02.06.png Eigenschaften meines Buckets in S3. Nur die Protokollierung ist aktiviert. Übrigens sind auch alle unten aufgeführten detaillierten Einstellungen ungültig.

スクリーンショット 2020-10-07 15.05.36.png Öffentlichen Zugang blockieren. Nur zwei sind eingeschaltet.

スクリーンショット 2020-10-07 15.06.47.png Bucket Policy Editor. Bitte ändern Sie den Bucket-Namen usw.

Ich werde den Code unten einfügen, damit ich ihn kopieren kann.

Bucket Policy


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt000001",
            "Effect": "Allow",
            "Principal": {
                "AWS": "ARN Ihres Benutzers(Bestätigt von IAM)"
            },
            "Action": "s3*",
            "Resource": "arn:aws:s3:::Ihr S3-Bucket-Name"
        }
    ]
}

Es wurden keine weiteren Elemente festgelegt.

Impressionen von Carrier Wave

CarrierWave eignet sich zum Ändern der Bildgröße, die Bereitstellung in AWS EC2 und die Verwendung von S3 war jedoch etwas schwierig. Ich möchte auch Active Storage studieren. Ich hoffe, es wird ein Artikel, der jemandem auch nur ein bisschen hilft!

Recommended Posts

[Rails] Bildbeitrag von CarrierWave [AWS EC2]
[Rails] Implementieren Sie die Image-Posting-Funktion
[Rails] Sprachposting-Funktion ~ Cloudinary, CarrierWave
[Rails] Aufbau einer AWS EC2-Instanzumgebung
Einfache Bereitstellung mit Capistrano + AWS (EC2) + Rails
So implementieren Sie die Image-Veröffentlichung mithilfe von Schienen
[Rails] Carrierwave einführen
Rezept für die Bereitstellung von Rails-Apps unter AWS EC2
[Rails] Nginx, Puma-Umgebungsbereitstellung und Serverstudie [AWS EC2]
So laden Sie Bilder von AWS S3 herunter (Rails, Carrierwave)
Starten Sie EC2 Rails
Stellen Sie RAILS auf EC2 bereit
Ich habe versucht, die automatische Bereitstellung mit CircleCI + Capistrano + AWS (EC2) + Rails durchzuführen