【问题标题】:From ssh private EC2 im unable to connect to my aws RDS Postgres database从 ssh private EC2 我无法连接到我的 aws RDS Postgres 数据库
【发布时间】:2021-10-14 12:08:51
【问题描述】:

运行以下命令后

docker run --rm \
    -it --name *****-db-setup \
    839*******.dkr.ecr.us-east-1.amazonaws.com/****-backend:dev-latest \
    bundle exec rake db:drop db:create db:migrate --trace

我得到了错误

** Invoke db:drop (first_time)
** Invoke db:load_config (first_time)
** Execute db:load_config
** Invoke db:check_protected_environments (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
PG::ConnectionBad: could not translate host name "db" to address: Name or service not known

知道这个连接错误可能来自哪里吗?如果我拿出一条线然后跑

docker run --rm \
    -it --name ****-db-setup \
    839*****.dkr.ecr.us-east-1.amazonaws.com/****-backend:dev-latest

我得到了 8 个错误

.env: line 1: $: command not found
.env: line 2: $: command not found
.env: line 3: $: command not found
.env: line 4: $: command not found
.env: line 5: $: command not found
.env: line 6: $: command not found
.env: line 7: $: command not found
.env: line 8: $: command not found

非常感谢任何见解。

config/database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  host: <%= ENV.fetch("DB_HOST") { "db" } %>
  username: <%= ENV.fetch("DB_USER") { "postgres" } %>
  port: <%= ENV["DB_PORT"] %>
  password: <%= ENV["DB_PASS"] %>
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: backend_development

test:
  <<: *default
  database: backend_test

production:
  <<: *default
  database: <%= ENV["DB_NAME"] %>

    enter code here

【问题讨论】:

  • 您的 rds 是否与实例在同一子网或 VPC 中?
  • 您可以将config/database.yml 添加到您的问题中吗?
  • @Marcin 是的,它在同一个 VPC 中。至于子网,RDS 有两个,而 EC2/ECS 有一个完全不同,根据架构图,它们不应该在同一个子网下,只是 VPC
  • @rmlockerd 我添加了它
  • 看起来您需要在您的环境中设置DB_HOST 作为您的RDS 端点(应该类似于foo.something.region.rds.amazonaws.com)。您的database.yml 的后备是使用主机db,这是连接错误中弹出的内容。

标签: ruby-on-rails amazon-web-services docker amazon-ec2


【解决方案1】:

您可以在此处检查几个步骤来解决此问题,

  1. 检查我们的路由表以确保您的路由正确。
  2. 检查 EC2 和 RDS 中的安全组,确保它们允许相关端口连接到相关源。
  3. 检查您的 NACL(网络 ACL)列表。

【讨论】:

  • 在网络 ACL 中我应该注意什么?
  • 只检查源(本例为 EC2 的 IP 地址)不会拒绝访问 RDS 的子网
猜你喜欢
  • 2016-09-09
  • 1970-01-01
  • 2016-06-07
  • 2017-05-22
  • 2020-10-19
  • 2021-07-29
  • 2019-05-27
  • 1970-01-01
  • 2016-09-02
相关资源
最近更新 更多