[Rails] Carrier Wave의 이미지 투고 [AWS EC2]

6515 단어 carrierwaveRubyRails

필자의 환경


Ruby 2.5.3
Rails 5.2.4.2
gem: fog-aws
Rails는 이미지 투고에서 Carrier Wave를 가져왔지만 gem:fog-aws를 이용해 많은 오류를 겪었기 때문에 앞으로 가져오는 사람들이 힘들 것 같아서 설정을 남기고 싶어요.
같은 환경이라면, 캐리어웨이브.rb에 대한 다음 설정 파일은 가능할 것 같습니다.

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 = 'あなたのS3のバケット名'
    config.asset_host = 'https://s3.ap-northeast-1.amazonaws.com/あなたのS3バケット名'
  end
end

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

주안점


· 정식 촬영 환경에서만 AWS3는 이미지를 유지한다.개발 환경은 로컬에 저장됩니다.
・carrierwave.rb의 보관 목록을 주의하세요.app/config/initializers/carrierwave.rb입니다.
carrierwave.rb
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/
이것은 가장 아래 코드입니다. 기본적으로carrierwave 파일 이름은 일본어를 사용할 수 없기 때문에 사용할 수 있습니다.낙하를 방지할 수 있습니다.
carrierwave.rb
aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"],
aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"]
관하여환경 변수를 env 파일에 지정하십시오.

AWS S3 설정


S3 설정도 힘들기 때문에 캡처해서 남기고 싶어요.

S3는 자신의 물통 속성이다.로깅만 사용할 수 있습니다.참고로 아래의 상세한 설정은 모두 무효입니다.

영역 공용 액세스.아래 두 개만 열었어요.

통 정책 편집기예요.각자 통 이름 등을 변경해 주세요.
복사할 수 있도록 아래에 코드를 놓으세요.
구간 정책
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt000001",
            "Effect": "Allow",
            "Principal": {
                "AWS": "あなたのユーザーのARN(IAMから確認)"
            },
            "Action": "s3*",
            "Resource": "arn:aws:s3:::あなたのS3バケット名"
        }
    ]
}
다른 항목이 설정되어 있지 않습니다.

Carrier Wave의 소감.


Carrier Wave의 이미지 크기 등은 편리하지만 AWS EC2로 디자인해 S3를 사용하기는 어려울 수 있습니다.
나도 액티브 스토어를 배우고 싶다.
조금이나마 도움이 되는 기사가 됐으면 좋겠어요!

좋은 웹페이지 즐겨찾기