Установить aws ключ доступа и секретный ключ с секретным менеджером Terraform - PullRequest
1 голос
/ 08 апреля 2020

У меня есть следующий шаблон terraform, который создает пользователя, ключ доступа и сохраняет его в секретном менеджере.

resource "aws_iam_user" "test" {
  name = "test"
}

resource "aws_iam_access_key" "test" {
  user = aws_iam_user.test.name
}

resource "aws_secretsmanager_secret" "test" {
  name = "credentials"
  description = "My credentials"
}

resource "aws_secretsmanager_secret_version" "test" {
  secret_id     = "${aws_secretsmanager_secret.test.id}"
  secret_string = "{\"AccessKey\": data.aws_iam_access_key.test.id,\"SecretAccessKey\": data.aws_iam_access_key.test.secret}"
}

Значения в secret_string не устанавливаются. Это правильное использование? Пожалуйста, помогите мне установить правильные значения

secret_string = "{\"AccessKey\": data.aws_iam_access_key.test.id,\"SecretAccessKey\": data.aws_iam_access_key.test.secret}"

1 Ответ

2 голосов
/ 09 апреля 2020

Вы можете создать свое значение аргумента secret_string как тип карты, а затем закодировать его в строку JSON, используя встроенную функцию Terraform jsonencode, чтобы обеспечить правильную передачу значения в аргумент. Ваш ресурс будет выглядеть так:

resource "aws_secretsmanager_secret_version" "test" {
  secret_id     = "${aws_secretsmanager_secret.test.id}"
  secret_string = jsonencode({"AccessKey" = aws_iam_access_key.test.id, "SecretAccessKey" = aws_iam_access_key.test.secret})
}

Обратите также внимание, что aws_iam_access_key.test.id и aws_iam_access_key.test.secret являются экспортированными атрибутами из ресурсов, а не данных, поэтому префикс data необходимо удалить из их пространства имен.

...