Назад | Перейти на главную страницу

Как сохранить секрет пароля mysql в terraform с помощью aws_kms_secrets

Я слежу за этим документом

https://www.terraform.io/docs/providers/aws/d/kms_secrets.html

Поскольку я хочу хранить пароль mysql в зашифрованном формате

Это выглядит хорошо

$ aws kms encrypt --key-id arn:aws:kms:us-west-2:>id>:key/7e791977-123456 --plaintext fileb:///tmp/dbpass --output text --query CiphertextBlob

Теперь, когда я пытаюсь использовать в своем коде на основе приведенного выше документа

data "aws_kms_secret" "rds" {
secret {
name = "db-password"
payload = "pay load here"
}
}

Фрагмент моего кода терраформирования

resource "aws_db_instance" "my-test-sql" {
  instance_class = "${var.db_instance}"
  engine = "mysql"
  engine_version = "5.7"
  multi_az = true
  storage_type = "gp2"
  allocated_storage = 20
  name = "mytestrds"
  username = "admin"
 password = "${data.aws_kms_secret.rds.db-password}"

Это не удается из-за этой ошибки

Error: Unsupported attribute

 on rds/main.tf line 16, in resource "aws_db_instance" "my-test-sql":
16:   password = "${data.aws_kms_secret.rds.db-password}"

 This object has no argument, nested block, or exported attribute 
named "db-password".

$ terraform version
Terraform v0.12.13

Кто-нибудь сталкивался с подобной проблемой / ошибкой с версией 0.12 terraform?

Обновить

Я даже пробовал то, что предлагалось в документе

password                = "${data.aws_kms_secret.rds.plaintext["db-password"]}"

Но это не удается из-за другой ошибки

Error: Unsupported attribute

 on rds/main.tf line 14, in resource "aws_db_instance" "my-test-sql":
 14:   password                = "${data.aws_kms_secret.rds.plaintext["db-password"]}"

 This object has no argument, nested block, or exported attribute named "plaintext".

Согласно той же документации, на которую вы ссылались, вы должны использовать ${data.aws_kms_secret.rds.plaintext["db-password"]} чтобы получить доступ к секрету.