##はじめに
これは前回の続きです。①、②がいわば下準備です。後はアプリの方に記述をするだけです。
よろしくお願いします。
##S3に保存するための記述を書く
まず、RailsアプリにGemを入れます。
Gemfileに下記を追記し、bundle installしましょう。
gem "aws-sdk-s3", require: false
% bundle install
続いてconfig/environments/development.rb
の記述を編集します。
下記の記述を確認してください。
# ~省略~
config.active_storage.service = :local
# ~省略~
この記述を下記のように編集します。
# ~省略~
config.active_storage.service = :amazon
# ~省略~
次にconfig/storage.yml
に追記します。
追記するのは**amazon:〜**からです
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
amazon:
service: S3
region: ap-northeast-1
bucket: ご自身の「バケット名」を入力
~省略~
bucket:のところは②の記事で作成した名前を入力してください。
最後にS3にアクセスするための認証情報を設定します。
今記述したstrage.ymlファイルに記述しますが、直接記述するとセキュリティー面で危険なので、環境変数に入れて、ここにはあとで変数を記入するようにします。
①の記事でダウンロードしたnew_user_credential.csv
ファイルを開くと「Access key ID」と「Secret access key」があるはずです。
これが環境変数に代入する値になります。
ここからはmacOSがCatalina以降とMojava以前ではコマンドが違うので気をつけてください。
ターミナルの開発中のアプリのディレクトリで下記を実行します。
% vim ~/.zshrc
$ vim ~/.bash_profile
ターミナル上で.zshrcファイル、もしくは.bash_profileファイルが開けたら「iキー」を押して入力可能な状態にします。
下記を追記します。
export AWS_ACCESS_KEY_ID="CSVファイルのAccess key IDの値を貼り付け"
export AWS_SECRET_ACCESS_KEY="CSVファイルのSecret access keyの値を貼り付け"
貼り付ける際、値のダブルクォーテーションは必要です。
追記が完了したら「escキー」→「:wq」でファイルを保存します。
先ほどの記述を実行するために下記のコマンドを実行します。
% source ~/.zshrc
$ source ~/.bash_profile
ターミナルがいくつも開いている場合は全てのタブでこのコマンドを実行します。
そして、もう一度storage.ymlを編集します。amazon:
のところです。
# ~省略~
amazon:
service: S3
region: ap-northeast-1
bucket: (自身のバケット名が記載されている状態です)
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
#~省略~
これで完了です。
ローカル環境でアプリのActiveStorageを利用した投稿機能などで、画像を保存してみてください。
その後①で作成したIAMユーザーでAWSでログインしS3のページへ移動します。
②で作成したバケットをクリックしてオブジェクトというところに、保存されているはずです。↓
中身も気になる方は、チェックボックスにチェックを入れて「開く」をクリックをすると確認することができます。
これでS3に保存することができました。