[RUBY] [Rails] Publication d'images par CarrierWave [AWS EC2]

Environnement de l'écrivain

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.

Paramètres de 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:]\.\-\+]/

point

-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.

Paramètres AWS S3

J'ai eu beaucoup de mal à configurer S3, alors j'aimerais le garder dans la capture d'écran.

スクリーンショット 2020-10-07 15.02.06.png 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.

スクリーンショット 2020-10-07 15.05.36.png Bloquer l'accès public. Seuls deux sont activés.

スクリーンショット 2020-10-07 15.06.47.png É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.

Impressions de la vague porteuse

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

[Rails] Publication d'images par CarrierWave [AWS EC2]
[Rails] Implémenter la fonction de publication d'images
[Rails] Fonction de publication vocale ~ Cloudinary, CarrierWave
[Rails] Construction de l'environnement d'instance AWS EC2
Déploiement facile avec Capistrano + AWS (EC2) + Rails
Pour implémenter la publication d'images à l'aide de rails
[Rails] Présentation de Carrierwave
Recette pour déployer des applications Rails sur AWS EC2
[Rails] Nginx, déploiement de l'environnement Puma et étude du serveur [AWS EC2]
Comment télécharger des images depuis AWS S3 (rails, carrierwave)
Lancez EC2 Rails
Déployer RAILS sur EC2
J'ai essayé le déploiement automatique avec CircleCI + Capistrano + AWS (EC2) + Rails