Terraform ресурс aws_elastic_beanstalk_environment и конфиденциальные данные

#terraform

#terraform

Вопрос:

У меня есть модуль beanstalk, в котором есть ресурс Terraform для aws_elastic_beanstalk_environment, который загружает переменные среды с карты.

 resource "aws_elastic_beanstalk_environment" "default" {
  name                   = module.label.id
  ...
  ...
  dynamic "setting" {
    for_each = var.env_vars
    content {
      namespace = "aws:elasticbeanstalk:application:environment"
      name      = setting.key
      value     = setting.value
      resource  = ""
    }
  }
  ... 
  

Я также загружаю секреты из источника данных aws_secretsmanager_secret и передаю их в модуль beanstalk.

 module "web-secrets" {
  source = "../modules/web/secrets" <- just loads secrets was data source aws_secrets_manager_secret
}

module "elastic-beanstalk-environment-lenz" {
  source                             = "../modules/beanstalk/beanstalk"
  ...
  ...

  env_vars = {
    "APPLICATION_NAME"        = "web"
    ...
    ...
    "API_KEY" = module.web-secrets.api_key
  }
}
  

однако во время планирования terraform ресурс aws_elastic_beanstalk_environment отображает его выходные данные на экране.

 terraform plan
      ...
      ...
        setting {
            name      = "API_KEY"
            namespace = "aws:elasticbeanstalk:application:environment"
            value     = "password"
        }
      ...
  

Поскольку я использую Terraform cloud, я не могу пытаться использовать другую утилиту в tfmask, чтобы скрыть конфиденциальную информацию перед возвратом вывода на экран.

Комментарии:

1. Обычно вы просто передаете имя своего секрета в качестве переменной env в EB. Тогда в вашем приложении вы фактически получите значение секрета.

2. К сожалению, у меня нет возможности, чтобы мои разработчики извлекали секрет из SSM непосредственно перед запуском приложения.