この教材は Rails 6 であることが前提です
この記事では,画像投稿機能の付いた Rails 6
のアプリを AWS EC2
にデプロイするまでの全過程を解説します。
「Heroku
にデプロイしたことはあるけれど,AWS
にデプロイしたことがない」という方を対象としますので,AWS
の操作は,直感的に操作できる AWS マネジメントコンソール
で行います。
AWS CLI
や Terraform
などのツールは使用しませんので,あらかじめご了承下さい。
この記事における注意事項を列記します。
AWS
は有料のサービスで,いわゆる従量課金制です(サービスの使用量に応じて料金が決まります)。
この記事の構成で AWS
を利用した場合,ポートフォリオのようにあまりアクセスが来ないアプリであっても,(無料利用枠を使用する前提で)月におよそ3000円前後かかります。
RDS
, ALB
などを使用せず, EC2
にデータベースシステムをインストールする構成にすればもっと安く済ませることができますが,ポートフォリオのアピール材料としては弱くなるでしょう。
なお,エラーが発生した際に原因を特定しやすくするため,AWS
へのデプロイはアプリの 完成後ではなく
,開発初期の段階
から行うことをお勧めします。
ただ,料金の問題がありますので,アプリの開発初期は Heroku
にデプロイし,仕上げの段階で AWS
にデプロイするという手法もありでしょう。
AWSにデプロイ予定のアプリが,以下の条件を満たすことを前提とします。
アプリの Rails のバージョンが 6
であること
データベースは MySQL 5.7
もしくは PostgreSQL
を使用
画像投稿機能がある場合は CarrierWave
を使用
6.1
に画像投稿機能の付いたサンプルアプリを作成する方法を紹介しておりますので,必要がございましたらご利用下さい。
以下のような一般的な構成を目指します。(料金の都合上,冗長化は行いません)
この記事は,「画像投稿機能の付いた Rails アプリを AWS EC2 にデプロイし,独自ドメインでアクセスできるようにする」ことを主目的としております。
最低限度知っておくべき内容は触れますが,インフラの基礎知識は解説しません。
AWS に必要な基礎知識を学べる本はたくさんありますし,Udemyにも解説動画があります。デプロイの完了後でもよいですので,是非学習されることをお勧めします。
理解が不十分な状態で進められる場合は, 絶対にミスをしない
ように気を付けて下さい。1つのミスで最初からやり直すことになり,数時間の作業が無駄になる可能性があります。
作業中にパスワードなど各自設定が異なる部分が複数存在します。メモ帳に以下を貼り付け,決まり次第埋めていくようにされるとよいでしょう。
【アプリ名】
【RDS】
●マスターユーザー名
●マスターパスワード
●エンドポイント
【EC2】
●Elastic IP
●sshでサインインするときのコマンド
ssh アプリ名
●ユーザー名
●パスワード
【ドメイン】
●ドメイン名
●ネームサーバー情報
【S3】
●バケット名
●リージョン
【IAM】
●ユーザー名
●アクセスキーID
●シークレットアクセスキー
【CloudFront】
static.ドメイン名
まずは,AWSで使用する アプリ名
を決め,上記にメモして下さい。ただし,「aws_sample_app」のように スネークケース
表記であることを前提とします。(アルファベット大文字は使わないで下さい)
「(AWSで使用する)アプリ名」は,「Railsのアプリ名」「GitHubのリポジトリ名」と合わせる方が混乱しづらいと思いますが,同じでなくても問題ありません。
以下, アプリ名
と記載している箇所は,全てこのメモ通りにして下さい。
要点のみ記載します。
AWSアカウントの作成
「セキュリティステータス」に全てチェックが入るように設定を進めましょう。
【参考】 https://qiita.com/tmknom/items/303db2d1d928db720888
IAM
ユーザーを作成IAM
ユーザーを追加最後に「請求アラーム」を作成し,課金状況を確認できるようにしておくことをお勧めします。