来自Rails app的AWS RDS数据库 - 从root用户切换到IAM用户时出错

时间:2015-12-11 03:56:14

标签: ruby-on-rails postgresql amazon-web-services heroku amazon-iam

我正在RDS PostgreSQL我正在开发的AWS应用中访问rails数据库。目前,我使用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配置变量中。

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

在我的开发环境中,我看到导轨错误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,无法想到会导致此错误的任何其他内容

1 个答案:

答案 0 :(得分:2)

您正在将IAM用户与数据库用户混合......

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

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

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