Railsアプリケーションを本番環境に構築するためのAWSでやったこと

ECRにrailsアプリケーションをプッシュ

  1. ECRでリポジトリを作成

  2. dockerイメージをプッシュ

// docker-compose.ymlまで移動しておく

// awsコマンドでログイン
$(aws ecr get-login --no-include-email --region ap-northeast-1)

// ビルド
$ docker build -t new/repository .

// イメージにタグをつける
$ docker tag new/repository:latest xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/new/repository:latest

// ERCのリポジトリにイメージをプッシュ
docker push xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/new/repository:latest

AWSでサーバーの準備

すでに準備されていたもの

Route53

  1. レコードセットを作成
  2. エイリアス先を既存ロードバランサーに向ける

Certificate Managerで証明書を発行

ハマりポイント:CNAMEレコードを追加しないといつまで経っても検証されない

EC2 > ロードバランシング

ターゲットグループを作成

  • 今回はポートを3001に設定
  • ターゲットを編集で使いたいインスタンスを登録
  • そのインスタンスに紐づいているセキュリティグループのインバウンドを編集
    ポート範囲:3001
    ソース:ロードバランサーのセキュリティグループIDを指定
    こいつをせっていしないと、504 Gatewaytimeoutになる

参考:AWSのロードバランサーはセキュリティグループに自分のグループIDが追加されてないと504 Gatewaytimeoutになる - YoshinoriN's Memento

ロードバランサー

  • SSL証明書:リスナーのHTTPS:443に先ほど発行した証明書を追加する
  • ルールを編集
    ホストをRoute53で設定したもの
    転送先をさっき作ったターゲットグループに指定

RDS

  • RDSのセキュリティグループでrailsアプリケーションからのアクセスを許可する