1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

基礎Ruby on Rails #24 Chapter13 クラウドスレレージサービス(Amazon S3)の利用

Last updated at Posted at 2018-10-21

基礎Ruby on Rails #23 Chapter13 複数画像のアップロード/順番の入れ替え
基礎Ruby on Rails #25 Chapter14 多対多の関連付け

クラウドストレージサービスの利用

CA証明書の設置

  • 全サービスに共通する準備作業として、SSL接続で使用するCA証明書を設置する。
  • ターミナルで以下の2つのコマンドを実行する。
$ CERT_PATH=$(ruby -ropenssl -e "puts OpenSSL::X509::DEFAULT_CERT_FILE")
$ sudo curl "https://curl.haxx.se/ca/cacert.pem" -o $CERT_PATH

Amazon S3

Amazon S3の概要

  • Amazon S3はAmazon Web Services (AWS) が提供するストレージサービス

AWSアカウントの取得

  • クレジットカードの登録が必要。アカウント作成から12ヶ月間はAmazon S3の無料利用枠が使える。(最大5GB)

IAMユーザーの作成

  • AWSコンソールでIAMユーザーを作成する。このIAMユーザーに対して、アクセスキーを作成する。アクセスキーとは、アクセスキーIDとシークレットアクセスキーを組み合わせたもの。
  • また、このIAMユーザーに対してAmazonS3FullAccessという名前のポリシーを付与(アタッチ)する。

  • IAMをクリック

image.png

  • ユーザーをクリック → ユーザーを作成をクリックする。

image.png

  • ユーザー名にasagaoを入力 → プログラムによるアクセスをチェックして、次のステップ:アクセス権限ボタンを押す。

image.png

  • 既存のポリシーと直接アタッチを選択 → AmazonS3FullAccessをチェック → 次のステップ:確認ボタンを押す。

image.png

  • 確認して、ユーザーの作成ボタンを押す。

image.png

  • ユーザー作成後、アクセスIDとシークレットアクセスキーをメモして閉じる。

バケットの作成

  • バケットとはオブジェクトを格納するための入れ物。
  • バケットにはリージョンという属性がある。Active Storageの資格情報に使用するのは、ap-northeast-1のような文字列。
  • バケット自体のアクセス制限に関する設定はデフォルトのままでOK。
    image.png

image.png

準備作業

  • Gemfileにgem 'aws-sdk-s3', require: falseを追加する。
Gemfile
gem 'aws-sdk-s3', require: false
$ bundle install
  • 資格情報を入力する。
$ echo 'export EDITOR=vim' >> ~/.bashrc
$ source ~/.bashrc
$ bin/rails credentials:edit
config/credentials.yml.enc(一部)
aws:
  access_key_id: XXXXXXXXXXXXXXXXXX
  secret_access_key: yyyyyyyyyyyyyyyyyyy
  • コメントアウトを外して、regionとbuketを入力する。(コメントアウトを外した時に、先頭に空白が入っているのでフォーマットすること)
config/storage.yml(一部)
# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
 amazon:
   service: S3
   access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
   secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
   region: ap-northeast-1
   bucket: tseno-asagao
  • config.active_storage.serviceの設定を:localから:amazonに変更する。
config/environments/development.rb(一部)
  # Store uploaded files on the local file system (see config/storage.yml for options)
  config.active_storage.service = :amazon

動作確認

  • データベースの画像を一旦クリアしてから、サーバーを起動する。
$ bin/rails db:rebuild
$ bin/rails s
  • 画像を登録する。

image.png

  • S3に入ったことを確認した。

image.png

Google Cloud Storage、Microsoft Azure Storageは今回は省略する

まとめ

  • DBに入れないファイルをS3に入れておけば管理が楽なので、この機能は使えそうですね。

参考
改訂4版 基礎 Ruby on Rails (IMPRESS KISO SERIES)

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?