Ruby 2.5.3 Rails 5.2.4.2 gem: fog-aws
J'ai introduit CarrierWave pour la publication d'images avec Rails, mais j'ai rencontré de nombreuses erreurs lors de l'utilisation de gem: fog-aws, donc j'ai pensé que ce serait difficile pour ceux qui l'introduiraient à partir de maintenant, j'ai donc décidé de laisser les paramètres. C'était.
S'il s'agit du même environnement, le fichier de paramètres suivant devrait être correct pour carrierwave.rb.
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 = 'Le nom de votre compartiment S3'
config.asset_host = 'https://s3.ap-northeast-1.amazonaws.com/Le nom de votre compartiment S3'
end
end
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/
-L'image est conservée dans AWS S3 uniquement dans l'environnement de production. L'environnement de développement est enregistré localement. -Faites attention au répertoire de stockage de carrierwave.rb. app / config / initializers / carrierwave.rb.
carrierwave.rb
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/
Ce code en bas est une phrase qui permet d'utiliser carrierwave car le japonais ne peut pas être utilisé par défaut dans le nom de fichier. Vous pouvez éviter les caractères déformés.
carrierwave.rb
aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"],
aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"]
Pour, spécifiez la variable d'environnement dans le fichier .env.
J'ai eu beaucoup de mal à configurer S3, alors j'aimerais le garder dans la capture d'écran.
Propriétés de mon compartiment dans S3. Seule la journalisation est activée. À propos, tous les paramètres détaillés ci-dessous sont également invalides.
Bloquer l'accès public. Seuls deux sont activés.
Éditeur de politique de compartiment. Veuillez changer le nom du bucket, etc.
Je vais mettre le code ci-dessous pour que je puisse le copier.
Politique de seau
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt000001",
"Effect": "Allow",
"Principal": {
"AWS": "ARN de votre utilisateur(Confirmé par IAM)"
},
"Action": "s3*",
"Resource": "arn:aws:s3:::Le nom de votre compartiment S3"
}
]
}
Aucun autre élément n'a été défini.
CarrierWave est pratique pour le redimensionnement d'image, mais il était un peu difficile à déployer sur AWS EC2 et à utiliser S3. J'aimerais également étudier le stockage actif. J'espère que ce sera un article qui aidera quelqu'un même un peu!
Recommended Posts