LoginSignup
0
2

More than 3 years have passed since last update.

Refileの保存先をS3に変更する(Rails, AWS)

Last updated at Posted at 2021-03-22

環境

  • Ruby 2.6.3
  • Rails 5.2.4

[IAM]ユーザー作成

IAMのダッシュボードでユーザーを選択し、ユーザーの追加をクリックします。
ユーザー名を入力AWSアクセスの種類を選択プログラムによるアクセスを選択肢、次へ

スクリーンショット 2021-03-22 12.30.07.png

既存のポリシーを直接アタッチを選択後S3で検索AmazonS3FullAccessを選択し、次へ
ユーザー登録は完了させ、.csvダウンロードする。
access_key secret_access_keyが書いてあるので忘れないように保管する。

(IAM)ユーザーのポリシーの追加

[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
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残っていると本番環境で反映されなかったので
エラーになる方は消した方がいいです。

.env
AWS_ACCESS_KEY_ID="アクセスキー"
AWS_SECRET_ACCESS_KEY="シークレットキー"
Gemfile
gem "refile-s3"

bundle installでgemを入れます。
本番環境にも同じように反映させたら完成です。

参考になった記事です
https://qiita.com/matsubishi5/items/c2abdd7375a4c683392a
https://qiita.com/piyor/items/36d2c3c9b8fd638a71a0

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2