Amazon web services 加密环境变量并在terraform代码中调用它

Amazon web services 加密环境变量并在terraform代码中调用它,amazon-web-services,environment-variables,terraform,terraform-provider-aws,Amazon Web Services,Environment Variables,Terraform,Terraform Provider Aws,我如何将变量的值作为机密,或者在Terraform中作为环境变量访问它们 例如,我正在设置数据源资源,例如 resource "aws_rds_cluster" "aurora" { cluster_identifier = var.db_cluster_identifier database_name = var.rds_db_name master_username

我如何将变量的值作为机密,或者在Terraform中作为环境变量访问它们

例如,我正在设置数据源资源,例如

resource "aws_rds_cluster" "aurora" {
    cluster_identifier            = var.db_cluster_identifier
    database_name                 = var.rds_db_name
    master_username               = var.rds_master_username
    master_password               = var.rds_master_password
    backup_retention_period       = var.backup_retention_period
    preferred_backup_window       = var.preferred_backup_window
    preferred_maintenance_window  = var.preferred_maintenance_window
    db_subnet_group_name          = aws_db_subnet_group.aurora.name
    #final_snapshot_identifier     = var.db_snapshot_cluster_identifier
    vpc_security_group_ids        = [aws_security_group.allow-aurora-db.id]
    skip_final_snapshot           = true
    # ...
}
在这里,我有一个如下参数: 主密码=var.rds\u主密码

它的值以明文形式存储在我的“terraform.tfvars”中,例如。 rds_master_password=“myDBpwsddnn123”

我的问题是,如果我将编码值存储在“terraform.tfvars”中,是否有任何方法可以在我的资源文件中对其进行解码


我使用Bitbucket作为我的回购协议。我使用AWS Secrets Manager作为所有密码的集中存储库,然后我的问题是如何在我的Terraform资源中获取环境变量、任何指针?

根据您可以在此处找到的Terraform文档:

将OS环境变量传递到terraform的最简单方法是:

首先,您需要像这样在终端中定义env变量,您必须在变量名中添加前缀
TF\u VAR

export-TF\u-VAR\u-database\u-secret=
然后在terraform代码中,您可以创建与OS env变量同名的terraform变量,而不使用
TF\u VAR\u
前缀

variable "database_secret" {
    type = string
}

然后您可以像以前一样使用变量,例如
var.database\u secret

您的问题可能很难理解。如果在terraform.tfvars中存储了一个值,则在资源文件中引用该值。如果我理解正确的话,您不想硬编码terraform.tfvars中的值,而是希望通过环境变量传递它。