【Rails】Refile에서의 저장처를 S3로 한다

개발 환경



Ruby 2.5.7
Rails 5.2.3

※이번, 배포에 대한 설명은 생략합니다.
※AWS의 계정을 가지고 있는 전제로 이야기를 진행해 갑니다.
※Refile은 도입 완료

IAM에서 사용자 추가



서비스에서 IAM을 선택하고 사용자를 선택하면 사용자를 추가할 수 있습니다.プログラムによるアクセス 에 체크를 해 주세요.

기존 정책을 직접 연결에서 AmazonS3FullAcccess로 확인합니다.
액세스 키 ID와 비밀 액세스 키를 잊지 않도록 메모하거나 csv에서 다운로드하십시오.

사용자를 추가한 후 사용자 이름을 선택하면 ↓와 같은 화면이 나옵니다.
거기 자격 증명에서 콘솔 암호를 설정합시다. (기본적으로 비활성화되어 있습니다)
※여기의 유저의 ARN은 카피해 두면 나중의 설정이 조금 편해집니다.


S3 버킷 추가



여기서부터는 추가한 IAM 사용자로 작업합니다.
지금 사용 중인 계정에서 로그아웃한 다음 만든 IAM 사용자로 로그인합니다.
지역은 무난하게 도쿄를 선택해 둡시다.

이 두 가지를 확인하고 버킷을 만드십시오.

버킷 정책 설정



버킷별로 액세스 제어를 설정하려면 생성한 S3 버킷을 선택한 다음 アクセス制限>バケットポリシー를 선택합니다.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::awsアカウントのid:user/IAMで追加したユーザー名"
            },
            "Action": "*",
            "Resource": "arn:aws:s3:::作ったS3バケット名"
        }
    ]
}

이것을 내 설정으로 바꾸고 저장하십시오.

gem 추가



gemfile
gem "refile-s3"
gem 'dotenv-rails'

refile-s3 : refile로 S3에 쉽게 업로드 할 수있는 gem입니다.
dotenv-rails : env를 사용할 수있게되는 gem입니다.

설명 후 bundle install 실행.

refile.rb 만들기


config/initializersrefile.rb 를 작성하십시오.

refile.rb
require "refile/s3"

aws = {
  access_key_id: ENV['AWS_ACCESS_KEY_ID'],
  secret_access_key: ENV['AWS_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)

작성한 파일에 상기를 기술
지역은 도쿄 이외에서 만들어진 경우 변경하십시오.

.env 만들기



Gemfile 등이 있는 디렉토리에 .env
.env
AWS_ACCESS_KEY_ID="アクセスキー"
AWS_SECRET_ACCESS_KEY="シークレットキー"

설정 후, github 등에 .env 파일을 올리지 않게 .gitignore/.env 라고 추기해 둡시다.

마지막으로



나머지는 언제나 그대로 배포하여 이미지를 S3에 저장할 수 있습니다.

좋은 웹페이지 즐겨찾기