これはなに?
RDSのインスタンスクラスごとのメモリ量を習得するterraform provider。
インスタンスクラスごとにデータソースを定義するか、
data "rds_db_instance_memory" "rds" { instance_class = "db.t3.micro" } #=> { # "instance_class" = "db.t3.micro" # "memory" = 1 # }
インスタンスクラスごとのメモリ量のマップを定義するデータソースを使って、メモリ量を取得できる。
date "rds_db_instance_memory_map" "rds" { } #=> { # "memory_by_instance_class" = tomap({ # "db.m1.large" = 7.5 # "db.m1.medium" = 3.75 # "db.m1.small" = 1.7 # ... # }) # }
あと、クラスタのインスタンスも合わせたすべてのDBインスタンスのインスタンスクラスを取得するデータソースも追加した。
data "rds_db_instances" "rds" { } #=> { # "instances" = tolist([ # { # "instance_class" = "db.t3.micro" # "name" = "database-1" # }, # { # "instance_class" = "db.t3.small" # "name" = "database-2" # }, # ... # ]) # }
用途
terraformでDatadogのアラートを設定するときに、メモリ使用量の閾値をパーセンテージで設定したいときとかに使う想定。
RDS情報の取得先
Vantageというクラウドコストの最適化サービスをやっている会社のOSSのよう。
https://instances.vantage.sh/rds/instances.json からJSONでRDSの情報を取得できるので
curl -sSfL https://instances.vantage.sh/rds/instances.json \ | jq 'map({key: .instanceType, value: .memory | tonumber}) | sort_by(.key) | from_entries'