LoginSignup
1
1

More than 3 years have passed since last update.

DockerでRails開発時に,画像の保存先をAWS S3にする

Posted at

先日,Rails, Dockerでの開発時に画像の保存先をローカルからS3に変更した際の手順を記録した.

開発環境

WSL2 (ubuntu 18.04 LTS)
Docker
- Ruby (2.7.1)
- Rails (6.0.3)

画像をS3に保存する手順

Active Storageがインストールされており,S3バケット作成まで完了していることを想定

Active Storageのインストールは以下のコマンドでできる

terminal
docker-compose run コンテナ名 rails active_storage:install
docker-compose run コンテナ名 rails db:migrate

用意するもの

  • S3バケット情報

    • バケット名
    • リージョン
  • IAMユーザー情報

    • アクセスキー
    • シークレットアクセスキー

手順

1. root dirにて以下のコマンドを実行
terminal
docker exec -it コンテナID sh
/app # EDITOR=vi rails credentials:edit

コンテナIDは以下のコマンドで確認できる

terminal
docker ps
2. credentialsを編集

credentialsをターミナル上で編集する

awsは最初コメントアウトされているので外す (それに気付かずハマってしまいました)

aws:
 access_key_id: 取得したアクセスキー
 secret_access_key: 取得したシークレットアクセスキー

入力し保存する.

Esc→:wqでセーブして保存する.

:wq
3. config/storage.ymlの編集

regionとbucketを作成したものに書き換える.

config/storage.yml
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: "リージョン"
 bucket: "bucket名"
4. aws-sdk-s3というgemをインストールする

Gemfileを編集

Gemfile
gem 'aws-sdk-s3', require: false

Gemfileを書き換えたので,コンテナをbuildし直す.

terminal
docker-compose build コンテナ名
5. config/environments/development.rbでActive Storageの参照先を:localから:amazonへと変更
config/environments/development.rb
config.active_storage.service = :amazon

以上で,S3のバケットに画像が保存された.

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