SCP(サービスコントロールポリシー)でRDSのインスタンスクラスを制限する方法になります。
初めてSCPを作成したので微妙にハマりました。
RDSのインスタンスクラスを制限する
※Auroraも同じSCPで制限できます
コスト最適化のために以下のインスタンスクラスに制限
・db.t2:micro、small、medium
・db.t3:micro、small、medium
・db.t4g:micro、small、medium
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "rds:CreateDBInstance", "Resource": "arn:aws:rds:*:*:*:*", "Condition": { "StringNotLike": { "rds:DatabaseClass": [ "db.t2.micro", "db.t2.small", "db.t2.medium", "db.t3.micro", "db.t3.small", "db.t3.medium", "db.t4g.micro", "db.t4g.small", "db.t4g.medium" ] } } } ] }
気を付けるところ1
以下の「Resource」記述にするとエラーとなりました
"Resource": "arn:aws:rds:*"
「Missing ARN Field: リソース ARN には、少なくとも 6 フィールドが含まれていて、次の構造が含まれている必要があります: arn:partition:service:region:account:resource。」
対応としては以下にしました。
"Resource": "arn:aws:rds:*:*:*:*",
気を付けるところ2
インスタンスクラスの先頭に「db」を付ける。 当たり前ですが「t2.micro」だとダメで、「db.t2.micro」にすること。
気を付けるところ3
Aurora MySQLを利用する場合は
Aurora(Mysql8.0~)はmedium以下のインスタンスタイプは選択できないため、mediumも含める。
動作確認(制限確認)