Adding Postgres
Info
Here I'm going to create Postgres with AWS UI. But of course you can use IaC tools such as Terraform, CDK...etc.
Create Postgres
Create a Postgres in staging and production accounts.
Add Environment Variables
copilot secret init
What would you like to name this secret? [? for help] RDS_HOSTNAME
What is the value of secret REDIS_HOST in environment prod?
What is the value of secret REDIS_HOST in environment staging?
copilot secret init
What would you like to name this secret? [? for help] RDS_PORT
What is the value of secret REDIS_HOST in environment prod?
What is the value of secret REDIS_HOST in environment staging?
copilot secret init
What would you like to name this secret? [? for help] RDS_DB_NAME
What is the value of secret REDIS_HOST in environment prod?
What is the value of secret REDIS_HOST in environment staging?
copilot secret init
What would you like to name this secret? [? for help] RDS_USERNAME
What is the value of secret REDIS_HOST in environment prod?
What is the value of secret REDIS_HOST in environment staging?
copilot secret init
What would you like to name this secret? [? for help] RDS_PASSWORD
What is the value of secret REDIS_HOST in environment prod?
What is the value of secret REDIS_HOST in environment staging?
Security Group
Add ECS's security group to allowed inbound traffic, so ECS can talk to Postgres.
Update Database Config
Update config/database.yml
# SQLite. Versions 3.8.0 and up are supported.
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem "sqlite3"
#
default: &default
  adapter: postgresql
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000
development:
  <<: *default
  database: rails70_development
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: rails70_test
production:
  <<: *default
  database: <%= ENV['RDS_DB_NAME'] %>
  username: <%= ENV['RDS_USERNAME'] %>
  password: <%= ENV['RDS_PASSWORD'] %>
  host: <%= ENV['RDS_HOSTNAME'] %>
  port: <%= ENV['RDS_PORT'] %>