DBのホスト名、ユーザー名、パスワードを環境変数で管理する場合
AWS SSMパラメータストア
を用いて管理すると良い
コンソールやaws-cli
から登録できる
aws-cli
# 暗号化した値(--type SecureString)を保存するときに叩くコマンド
$ aws ssm put-parameter --name 'name' --value 'password' --type SecureString
# 暗号化した値を複合して(--with-decryption)参照するときに叩くコマンド
$ aws ssm get-parameter --output text --query Parameter.Value --name 'name' --with-decryption
=> password
Terraformによるコード化を行う場合の注意点
暗号化するコードがソースコードに平文で書かれてしまうと暗号化する意味がなくなってしまうので、Terraformではダミーの値を設定して、あとでaws-cliから更新する
戦略が有効。
ssm.tf
resource "aws_ssm_parameter" "db_password" {
name = "/db/password"
value = "password"
type = "SecureString"
description = "DB_PASSWORD"
lifecycle {
ignore_changes = [value] # 上書きして変更するので無視する
}
}
aws-cli
$ aws ssm put-parameter --name 'db/password' --type 'SecureString' --value 'overwrite-password' --overwrite
参考
実践Terraform AWSにおけるシステム設計とベストプラクティス
Resource: aws_ssm_parameter
AWS CLI Command Reference