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.
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:]\.\-\+]/
-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.
Ich hatte große Probleme beim Einrichten von S3, daher möchte ich es im Screenshot behalten.
Eigenschaften meines Buckets in S3. Nur die Protokollierung ist aktiviert. Übrigens sind auch alle unten aufgeführten detaillierten Einstellungen ungültig.
Öffentlichen Zugang blockieren. Nur zwei sind eingeschaltet.
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.
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