我想使用来自 AWS Secrets Manager 的密钥将 RDS 数据库部署到 AWS。我有:
├─ environments
│ └─ myenv
│ ├── main.tf
│ ├── locals.tf
│ └── variables.tf
└─ modules
├─ db
│ ├── main.tf
│ └── variables.tf
└─ secrets
└── main.tf
在myenv/main.tf
我定义了一个模块,该模块mydb
具有modules/db/main.tf
定义source
资源数据库的位置。保存密码,一切正常,我指定块中myenv
的值和“涓滴”值。但是对于凭证,我当然不想硬编码它们myenv
。相反,在 modules/secrets
我定义
data "aws_secretsmanager_secret_version" "my_credentials" {
# Fill in the name you gave to your secret
secret_id = "my-secret-id"
}
和另一个块:
locals {
decoded_secrets = jsondecode(data.aws_secretsmanager_secret_version.my_credentials.secret_string)
}
我解码了这些秘密,现在我想引用它们,例如local.decoded_secrets.username
在myenv/main
. 这是我对教程的解释。但它不起作用:如果我把locals
块放在myenv
里面就不能引用data
,当我把它放进去时,modules/secrets
就myenv
不能引用locals
。如何将这两个模块的值组合在我的myenv/main
?