概要
terraformを用いて特定のDBインスタンスのRDSのパフォーマンスインサイトのみを参照するIAMポリシーを作成することがあったので、その備忘録として記録します。
作ったもの
- iam_policy.tf
- outputs.tf
作り方
- iam_policy.tfをつくる
iam_policy.tf
resource "aws_iam_policy" "testRDSPerformanceInsight" {
name = "testRDSPerformanceInsight"
path = "/"
policy = <<POLICY
{
"Statement": [
{
"Action": [
"rds:DescribeDBInstances",
"rds:DescribeDBClusters"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": "pi:*",
"Effect": "Allow",
"Resource": "arn:aws:pi:ap-northeast-1:AWSアカウントID:metrics/rds/dbのリソースID"
}
],
"Version": "2012-10-17"
}
POLICY
}
- outputs.tfをつくる
outputs.tf
output "aws_iam_policy" {
value = {
testRDSPerformanceInsight = aws_iam_policy.testRDSPerformanceInsight
}
}
-
terraform plan
を実行する -
terraform apply
を実行する
備忘録
- iam_policy内で
rds:DescribeDBInstances
とrds:DescribeDBClusters
に関してはResource指定で*
を指定しないと、パフォーマンスインサイトはおろか、DB一覧自体も参照できなかったので、その2つは*
にすることが必須条件っぽい -
pi:*
に関することに対して、対象の参照したいDBを指定することで、コンソール上から特定のRDSのパフォーマンスインサイトが参照できるようになった - DB指定をする際、DBのリソースIDを指定する必要があるので、DBがまだ作成されていない場合は先に作成する必要があるかもしれない(推測)
参考文献
最後までお読みいただき、ありがとうございました!