2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS ECS + Rails + MySQL(Aurora) – 同じセキュリティグループに ECサービスとRDSを作成して RailsからDBアクセス可能にする

Posted at

概要

同じセキュリティグループ同士は無条件に全てのトラフィックが許可されるので、ECSサービスもRDSも同じセキュリティグループに作成することでRailsからDBへのアクセスを可能にする

Rails

scaffoldなどでDBアクセスが発生するページを作成しておく

rails generate scaffold users name:string

Productionでのデバッグ用に一時的に画面からエラー確認できるようにしておくと便利かもしれない

rails-docker/config/environments/production.rb

Rails.application.configure do
  config.consider_all_requests_local       = true

VPCの作成

パブリックサブネット2個
プライベートサブネット0個

でVPCを作成する

image

他の設定は

  • 「VPCなど」
  • DNS ホスト名を有効化
  • DNS 解決を有効化

セキュリティグループの設定

自分がWebからアクセスできるように、今作成したVPCのセキュリティグループで、マイIPに対してHTTPアクセスを許可する

image

RDSでデータベースを作成

  • 最初に作成したVPCを選択する
  • ユーザー名・パスワードを設定する
  • パブリックアクセスありに設定する

image

Rails のコードでDB設定する

データベース作成が進みエンドポイントが分かったらそれを設定で使う
database.yaml に直接書く例

default: &default
  adapter: mysql2
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

production:
  <<: *default
  host: ******.cluster-cgklnrcdw5xr.ap-northeast-1.rds.amazonaws.com
  username: admin
  database: rails_example_production
  password: *****

ECR に Rails のイメージをpushする

よしなに

ちなみに今回使ったDockerfileの例

FROM ruby:3.1.2

RUN mkdir /api
WORKDIR /api
COPY Gemfile /api/Gemfile
COPY Gemfile.lock /api/Gemfile.lock

# Bundlerの不具合対策(1)
RUN gem update --system
RUN bundle update --bundler

RUN bundle install --jobs=4
COPY . /api

CMD RAILS_LOG_TO_STDOUT=1 RAILS_ENV=production bundle exec rails server -p 80 -b '0.0.0.0'

タスク定義を作る

よしなに

ECSクラスタの作成

既にある場合はスキップ

ECSサービスの作成

最初に作ったVPCと同じものを使う
RDSに利用しているものと同じ

image

ロードバランサ・ターゲットグループもこの例では新しく設定する

image

マイグレーション

一時的にセキュリティグループのインバウンド設定でマイIPからDBポートへのアクセスを許可すれば、localからDBマイグレーションができる

 RAILS_ENV=production rails db:create
 RAILS_ENV=production rails db:migrate

ネットワークアクセス

ECSサービスのデプロイが成功したらネットワーキングタブよりURLにアクセスする

image

/users などDBアクセスが発生する画面に移動して表示されれば成功

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?