はじめに
あらかじめパラメータストアに登録されている秘匿情報を用いてTerraformでAWS環境を構築する、という事は多々あると思います。
公式ドキュメントに記載があるのですが、具体的な例を交えた端的な活用方法が余り見当たらないので、残しときます。
RDSのユーザー名、パスワードを登録する
以下の様なパラメータがパラメータストアに登録されています。
-
/dev/rds/username
: データベースユーザー名 -
/dev/rds/password
: データベースパスワード
Twelve-Factor Appの3.設定に従がって環境毎にパラメータを分けたい為、階層パラメータを用いて先頭に環境名(/dev
)を付けています。
パラメータを取得しRDSを構築する
いきなりTerraformのコードです。
main.tf
# 環境はvar.envで切り替える。今回は var.env=dev
# parameter store
data "aws_ssm_parameter" "db_username" {
name = "/${var.env}/rds/username"
}
data "aws_ssm_parameter" "db_password" {
name = "/${var.env}/rds/password"
}
# RDS Setting
resource "aws_db_instance" "db" {
db_name = "sample_db"
identifier = "sample-${var.env}-db"
allocated_storage = 20
storage_type = "standard"
engine = "mysql"
engine_version = "5.7"
instance_class = "db.t3.small"
username = data.aws_ssm_parameter.db_username.value # ココで呼ぶ!
password = data.aws_ssm_parameter.db_password.value # ココで呼ぶ!
...略
}
パッとみて分かるものがないな、と思ったので記事にしました。