#環境
- Ruby 2.6.3
- Rails 5.2.4
#[IAM]ユーザー作成
IAMのダッシュボードでユーザーを選択し、ユーザーの追加をクリックします。
ユーザー名を入力AWSアクセスの種類を選択プログラムによるアクセスを選択肢、次へ
既存のポリシーを直接アタッチを選択後S3で検索AmazonS3FullAccess
を選択し、次へ
ユーザー登録は完了させ、.csvダウンロードする。
access_key
secret_access_key
が書いてあるので忘れないように保管する。
#[S3]バケットポリシーの編集
S3に入ってバケットの選択し、アクセス許可のタブをクリック
バケットポリシーを編集するをクリックし、下のコード追加します。
AWSアカウントのidは右上の自分の名前をクリックし、マイアカウントの数字です。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::awsアカウントのid:user/IAMで作成したユーザー名""
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::バケット名/*"
}
]
}
#refile.rbを作成
$ touch config/initializers/refile.rb
require 'refile/s3'
#if !Rails.env.production? # 開発環境でS3へアップロードできているか確認する方法
if Rails.env.production? # 本番環境の場合
aws = {
access_key_id: ENV['S3_ACCESS_KEY_ID'], # アクセスキーID
secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], # シークレットアクセスキー
region: 'ap-northeast-1', # リージョン
bucket: 'S3バケット名',
}
Refile.cache = Refile::S3.new(prefix: 'cache', **aws)
Refile.store = Refile::S3.new(prefix: 'store', **aws)
end
Refile.cache
Refile.store
残っていると本番環境で反映されなかったので
エラーになる方は消した方がいいです。
AWS_ACCESS_KEY_ID="アクセスキー"
AWS_SECRET_ACCESS_KEY="シークレットキー"
gem "refile-s3"
bundle install
でgemを入れます。
本番環境にも同じように反映させたら完成です。
参考になった記事です
https://qiita.com/matsubishi5/items/c2abdd7375a4c683392a
https://qiita.com/piyor/items/36d2c3c9b8fd638a71a0