今日学んだこと
本番環境での画像保存
内容
準備(コード)
(Gemfile)
gem "aws-sdk-s3", require: false
(ターミナル)
$ bundle config set --local without 'production'
$ bundle install
準備(AWS)
AWSアカウントを作成する。
IAMサービスでユーザーを作成する。
- 「AWS マネジメントコンソールへのユーザーアクセスを提供する」チェックボックスを有効化
- 「IAM ユーザーを作成します」を選択
- 「ユーザーは次回のサインイン時に新しいパスワードを作成する必要があります」はオフ
- 「既存のポリシーを直接アタッチ」を選択
- 「Administrator Access」を選択
※ 作成後画面の「.csvファイルのダウンロード」は必ずクリックし、保存すること
IAMユーザーでサインインする。
「ユーザーの概要」から「アクセスキーの作成」を行う。
- ユースケース:AWS の外部で実行されるアプリケーション
- 説明タグ値:空欄
※ 作成後の「.csvのダウンロード」は必ず行う
AWSコンソールでS3バケットを作成する。
- リージョン:アジアパシフィック(東京)
- バケットタイプ:汎用
準備(render)
環境変数(4つ)を設定する。
- AWS_ACCESS_KEY_ID:アクセスキー
- AWS_SECRET_ACCESS_KEY:シークレットアクセスキー
- AWS_REGION:リージョン名
- AWS_BUCKET:バケット名
準備(コード)
(config/storage.yml)
amazon:
service: S3
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
region: <%= ENV['AWS_REGION'] %>
bucket: <%= ENV['AWS_BUCKET'] %>
(production.rb)
config.active_storage.service = :amazon
(ターミナル)
$ git add .
$ git commit -m "deploy setting"
$ git push origin branch_name
動作確認
render上でデプロイするブランチを選択し、動作確認を行う。
感想
AWSの設定はIAMユーザー等分からない部分が多いので、公式リファレンス等を参照して理解を深めたい。
余談
active storageのs3への保存も完成し、アプリの作成、テスト、デプロイまで一通り自力でたどり着くことができました。
簡単な機能しか持たないアプリ作成でも約1ヶ月かかり、世の中のアプリがどれ程の苦労の末にリリースされているかを身を以て感じました。
今後は、javascriptや外部サービス連携等の追加機能について学習していきたいと思います。