Rails 用 carrierwave 上傳至 AWS s3
首先必須安裝
gem 'fog-aws', '~> 3.5', '>= 3.5.1'
gem 'figaro', '~> 1.1', '>= 1.1.1'
gem 'carrierwave', '~> 1.3', '>= 1.3.1'
需要的資料有:五項資料
aws_access_key_id: ENV["aws_access_key_id"], #key_id
aws_secret_access_key: ENV["aws_secret_access_key"], #私鑰
host: "s3-ap-northeast-1.amazonaws.com", #主機位置
region: "ap-northeast-1" #區域
config.fog_directory = ENV['bucket_name'] #創建的空間名
1.先到 S3 創一個bucket(名稱不能重複
bucket_name:5x-pet-collage
區域:東京
2.在儲存空間內上傳
3.把圖片點開來看
4.從物件URL可以得知
https://5x-pet-collage.s3-ap-northeast-1.amazonaws.com/
目前為止五項有了三項
host: "s3-ap-northeast-1.amazonaws.com", #主機位置
region: "ap-northeast-1" #區域
config.fog_directory = "5x-pet-collage" #空間名稱
5.獲取鑰匙id跟私鑰
點選建立新的存取金鑰
6.建立新的存取金鑰
如此一來該要的資料都到齊了
7.接著在自己創建的 carrierwave.rb
CarrierWave.configure do |config|
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"],
host: "s3-ap-northeast-1.amazonaws.com",
region: "ap-northeast-1"
}
config.fog_directory = ENV['bucket_name']
end
8.在carrierwave創建的uploder檔修改
# if Rails.env.production? #production的時候改為上傳至sw3
# storage :fog
# else
# storage :file
# end