来自 Rails 应用程序的 AWS RDS 数据库 - 从根用户切换到 IAM 用户时出错

AWS RDS Database from Rails app - Error when switching from root to IAM user

我正在从我正在开发的 rails 应用程序访问 AWS 上的 RDS PostgreSQL 数据库。目前,我正在使用我的 AWS root 凭据访问数据库。

在我的 database.yml:

pg_development:
  <<: *pg_default
  adapter: postgresql
  database: myDatabase
  username: myRootUsername
  password: myRootPassword
  host: myDatabase.1234.us-east-1.rds.amazonaws.com

在生产中,它们存储在 Heroku 配置变量中。

这与我的根凭据完美配合。然后我设置了一个 IAM 用户和组以提高安全性。我已经批准了我能想到的每一项政策。我已尽我所能关注 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.html...

在我的开发环境中,我看到 rails 错误 PG::ConnectionBad FATAL: password authentication failed for user "myIAMuser"

在我的 Heroku 日志中它说 Completed 500 Internal Server Error in 59ms (ActiveRecord: 1.3ms) 和我在开发中看到的相同的致命错误。

我以前从未使用过 IAM,我希望我只是犯了一个简单的错误,传递凭据的方法与 IAM 不同。

我已经尝试重新启动服务器,切换回 root 以确保我没有搞砸任何其他导致错误的事情,rake db:migrate,想不出任何其他会导致此错误的原因。

您正在混合使用 IAM 用户和数据库用户...

IAM 用户,是 AWS 中的用户(例如,可以登录管理控制台,或使用 SDK 功能启动 ec2 实例、创建 RDS 数据库、将数据写入 S3 等的用户) ).

启动 RDS 实例时,必须指定 admin/root 用户名和密码。我的猜测是这是有效的用户名和密码(请注意,此用户名和密码不能识别 IAM 用户)。

如果您想缩小应用程序的数据库访问范围,您需要在 RDS PostgreSQL 本身内部创建一个新的数据库用户(使用某种 Postgre GUI,或者通过连接 Postgre 数据库并发出 CREATE USER ).