本来没有打算要写这个内容的,但是提到上传图片,好像不能不说一下云端储存,毕竟不能永远在本地端欣赏自己的档案、照片,总有一天还是会碰到上传的问题。而且朋友强烈推荐 AWS S3 服务,所以就来说下这个服务吧。
这是 Amazon 提供云端储存服务,全名是 Simple Storage Service,简称为「S3」,可利用此服务来存放和保护任意数量的资料,例如网站、行动应用程序、备份和还原、存档、企业应用程序、IoT 装置及大数据分析。
要不要钱呢?
新的 AWS 客户在第一年每月可以获得 5 GB 的 Amazon S3 标准储存、20,000 次 Get 请求、2,000 次 Put 请求、15 GB 的资料传入、15 GB 的资料传出。
打开google,搜寻 AWS,然後注册吧!
因为前天有讲到怎麽上传图片,而 CarrierWave 在 GitHub 的文件下方就有提到使用 S3 服务的说明,来动手做做看!
# Gemfile
gem 'fog-aws', '~> 3.6', '>= 3.6.7'
记得 bundle install
打开 config/intializers,在这个资料夹中新增一个档名称为 carrierwave.rb
把这段复制贴上到新建的档案中
这边先做初始化设定,必须提供你的 fog_credentials 和 fog_directory (也就是 bucket)
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS', # required
aws_access_key_id: 'xxx', # required unless using use_iam_profile
aws_secret_access_key: 'yyy', # required unless using use_iam_profile
use_iam_profile: true, # optional, defaults to false
region: 'eu-west-1', # optional, defaults to 'us-east-1'
host: 's3.example.com', # optional, defaults to nil
endpoint: 'https://s3.example.com:8080' # optional, defaults to nil
}
config.fog_directory = 'name_of_bucket' # required
config.fog_public = false # optional, defaults to true
config.fog_at
仔细一看,其中有好多项目要填,而且都是比较机密的资讯,总不能把这些 id、金钥等以明码的方式跟着程序码一起推上 GitHub 吧?其实昨天讲述的 figaro 都只是铺梗,一切都是为了使用别人的服务,通常在引入他人的服务时,都会需要一些验证方式,所以正适合使用隐藏金钥的环境变数。
class AvatarUploader < CarrierWave::Uploader::Base
storage :fog # to AWS S3
end
有产生一格物件的 URL,可以知道 bucket 的名称、地区
打开 config/application.yml 新增金钥,你可以自己决定要放在哪个环境中(production、test、development)
AWS_ACCESS_KEY_ID: '存取金钥 ID'
AWS_SECRET_ACCESS_KEY: '私密存取金钥'
S3_BUCKET_NAME: '储存库名称'
(一个不小心手残按错,把第一次截图的金钥给删除了,再重新创建一笔,所以两张截图的金钥才会是不同的! 如果你没发现就算了 )
设定:
$ figaro heroku:set -e production
进到 heroku config 查询是否设定成功
$ heroku config
heroku run rails c
ENV[“AWS_ACCESS_KEY_ID”] # 分别印出相应的乱数即为成功
ENV[“AWS_SECRET_ACCESS_KEY”]
ENV[“S3_BUCKET_NAME”]
参考资料:
GitHub-CarrierWave Using Amazon S3
rails 上传图片超简单
使用 Carrierwave 与 Figaro套件,在Heroku 部署 Rails 专案结合 AWS S3 存放上传图片
学无止尽,每天都要进步一点点!
>>: 第41篇-尝试建立 java 环境并运行 helloworld
Load Balancer (负载平衡器) 与 Auto Scaling 都算是云端设备中非常重要的...
Q: 今天叫醒你的是什麽? A: 是迷糊中醒来後,看到草稿不见的震撼(✘﹏✘ა) 继上一篇 Loa...
前言 昨天的文章讲完 Deployment 以及 ReplicaSet 後相信大家应该对於如何产生更...
FrameLayout(帧布局) FrameLayout是布局当中最简单的一个, 在未设定的情况下,...
攻击者会使用Trojan horses(木马程序)来诱骗使用者在电脑上执行预先设计的操作, 一旦木马...