DockerでRails開発時に,画像の保存先をAWS S3にする
先日,Rails, Dockerでの開発時に画像の保存先をローカルからS3に変更した際の手順を記録した.
開発環境
WSL2 (ubuntu 18.04 LTS)
Docker
- Ruby (2.7.1)
- Rails (6.0.3)
画像をS3に保存する手順
Active Storageがインストールされており,S3バケット作成まで完了していることを想定
Active Storageのインストールは以下のコマンドでできる
docker-compose run コンテナ名 rails active_storage:install
docker-compose run コンテナ名 rails db:migrate
用意するもの
-
S3バケット情報
- バケット名
- リージョン
-
IAMユーザー情報
- アクセスキー
- シークレットアクセスキー
手順
1. root dirにて以下のコマンドを実行
docker exec -it コンテナID sh
/app # EDITOR=vi rails credentials:edit
コンテナIDは以下のコマンドで確認できる
docker ps
2. credentialsを編集
credentialsをターミナル上で編集する
awsは最初コメントアウトされているので外す (それに気付かずハマってしまいました)
aws:
access_key_id: 取得したアクセスキー
secret_access_key: 取得したシークレットアクセスキー
入力し保存する.
Esc→:wqでセーブして保存する.
:wq
3. config/storage.ymlの編集
regionとbucketを作成したものに書き換える.
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を編集
gem 'aws-sdk-s3', require: false
Gemfileを書き換えたので,コンテナをbuildし直す.
docker-compose build コンテナ名
5. config/environments/development.rbでActive Storageの参照先を:localから:amazonへと変更
config.active_storage.service = :amazon
以上で,S3のバケットに画像が保存された.
Author And Source
この問題について(DockerでRails開発時に,画像の保存先をAWS S3にする), 我々は、より多くの情報をここで見つけました https://qiita.com/tonegawa07/items/cd9d381db6f6cf4669b1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .