如何使用IAM Auth为RDS mysql实例在EC2实例上设置Grafana?

时间:2018-02-26 20:52:21

标签: mysql amazon-rds amazon-iam grafana

我在EC2实例上安装了一个带有grafana的ELK堆栈。我在RDS中创建了一个mysql数据库,创建了一个grafana数据库和一个具有相应权限的grafana用户。可以使用适当设置的IAM角色通过mysql访问该用户。

但是,当我尝试使用该数据库启动Grafana服务时,我在日志中收到以下错误:

"Fail to initialize orm engine" logger=sqlstore error="Sqlstore::Migration 
failed err: Error 1045: Access denied for user 'grafana'@'SERVERIP' (using 
password: YES)\n"

我的grafana.ini数据库部分如下所示:

[database]
host = aurora-cluster-ClusterName.cluster-
RandomAWSSuppliedChars.Region.rds.amazonaws.com:3306
type = mysql
name = grafanaDbName
user = grafanaUserName
password = `aws rds generate-db-auth-token --hostname aurora-cluster-
  ClusterName.cluster-RandomAWSSuppliedChars.Region.rds.amazonaws.com --
  username grafanaUserName --port 3306 --region
  Region`

我也尝试过不提供密码,但我很确定我需要提供生成的身份验证令牌。我还尝试生成一个身份验证令牌并在15分钟的窗口期间手动粘贴它,同时它有利于测试目的,我得到了相同的拒绝访问错误。

是否支持IAM身份验证?如果是这样,我如何提供所需的Auth令牌?

1 个答案:

答案 0 :(得分:0)

配置文件需要几个特定设置才能连接。 RDS要求两者一个ssl证书和一个IAM令牌。令牌是一个长期生成的字符串,最好设置为环境变量然后传入。证书必须是downloaded并且可以访问。

[database]
host = ClusterUri:3306
type = mysql
name = grafanaDatabaseName
user = grafanaUserName
password = AwsSuppliedToken
ssl_mode=true
ca_cert_path=/CertificatePath/rds-combined-ca-bundle.pem
server_cert_name=ClusterName.cluster-RandomAwsSuppliedCharacters.AwsRegion.rds.amazonaws.com