【概要】
AWSのS3についてのアウトプット(備忘)、また、これからはじめて触れるよ!って方の参考になればと思います〜。
設定に若干苦戦したのと、他の記事で情報の過不足の部分があったので初めての方でもわかりやすく設定できればと思います!!
(画面は2023年11月時点のものとなります。)
【対象】
・S3でクラウド環境に画像を保存したい。
・renderでdeployをしたい。(Herokuなどでも可ですが、環境ヘ変数の設定が少し異なります。)
・.envファイルで管理したい。(credentialファイルでも設定可ですが、今回は.envで管理します。)
【環境】
・Rails7系
・Ruby3.2.2
・CarrierWave導入済。(carrierwaveについては省略します。)
・Docker ver3
・render
【前提条件】
・・AWSのS3で本番環境でも画像を保存できるようにしよう。【vol1】
・・AWSのS3で本番環境でも画像を保存できるようにしよう。【vol2】 ←イマココ
・・AWSのS3で本番環境でも画像を保存できるようにしよう。【vol3】
【手順】
1.初めに
2.Gemのインストール
3.development.rbの編集
4.storage.ymlの編集
【1.はじめに】
今回はAWSのS3を用いた画像アップロードを実装していきます。
【2.Gemのインストール】
S3を使用するために必要なaws-sdk-s3というGemをインストールします!
今回は、require: false
のオプションを設定してください。なおオプションを設定する理由は下記です。
通常、Gemを追加すると、自動的にプログラム内で読み込まれますが、このオプションを指定することで、手動で読み込む必要がある場合にのみ読み込むことができます。これにより、プロジェクト全体でAWSの他の機能を使用する場合に、不要なコードの読み込みを避けることができます。(ChatGPTより引用)
gem "aws-sdk-s3", require: false
bundle install
【3.development.rbの編集】
画像の保存先をlocalからS3に保存されるように設定を変更します。
まず、development.rb
に記述している画像の保存先の設定を下記のように変更します。
#config.active_storage.service = :local
config.active_storage.service = :amazon
なお、production.rb
も変更しておきましょう。
#config.active_storage.service = :local
config.active_storage.service = :amazon
【4.storage.ymlの編集・環境変数の使用】
amazon:
service: S3
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %> #環境変数の設定はvol3で行います。
region: ap-northeast-1 #regionを変更
bucket: <%= ENV['AWS_BUCKET_NAME'] %>
お疲れ様です。次工程が最後になります。
引用