TL;DR
- EC2上で動かしているGrafanaで、CloudWatch経由でメトリクスを取得したい
- Credentialsを直接指定するのではなく、IAMロールでの指定としたい
- IAMロールを使用する場合、Auth Providerは
Credentials
またはAccess & secret key
を選び、profile
やAccess key ID
、Secret access key
は指定しない
Amazon CloudWatchをGrafanaのデータソースとする
Grafanaのドキュメントとしては、以下に記載があります。
CloudWatchにアクセスするための情報取得の優先順位としては、以下のようになります。
If Auth Provider is Credentials file, Grafana try to get credentials by following order.
・Environment variables. (AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY)
・Hard-code credentials.
・Shared credentials file.
・IAM role for Amazon EC2.
ここは、Credentialの情報を直接入力したりファイルに書いたりするのではなく、IAMロールを使ってやりたいところですね。
環境
利用するGrafana。
$ bin/grafana-server -v
Version 6.3.5 (commit: 67bad72, branch: HEAD)
OSの情報。
$ cat /etc/system-release
Amazon Linux release 2 (Karoo)
$ uname -a
Linux ip-xx-xx-xx-xx.ap-northeast-1.compute.internal 4.14.133-113.112.amzn2.x86_64 #1 SMP Tue Jul 30 18:29:50 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
IAMロールを作成してEC2にアタッチする
GrafanaからAmazon CloudWatchを利用する際に、作成が必要なIAMロール(ロールに付与すべきポリシー)は、ドキュメントに記載があります。
まずは、こちらをEC2にアタッチしておきます。
Amazon CloudWatchをGrafanaのデータソースとして追加する
ここで、ついついAuth ProviderにARN
を選んで、Assume Role ARN
に作成したIAMロールのARNを入力したくなるのですが、これはうまくいきません。
Credentials file
またはAccess & secret key
を選択します。
Credentials file
を選んだ場合は、Credentials profile name
を指定しない、
Access & secret key
を選んだ場合は、Access key ID
およびScret access key
を指定しないようにすれば、データソースに追加することができます。
ちょっとしたハマりどころ(?)なので、メモとして。