如何防止 Terraform 询问在 AWS Secrets Manager 上设置的变量的值?
How to prevent terraform from asking for the value of a variable that is set on AWS Secrets Manager?
我有以下 HCL 代码,它从 terraform plan
上的终端询问并读取 secret_api_key
变量并将其保存在秘密管理器中。
variable "secret_api_key" {
type = string
sensitive = true
}
resource "aws_secretsmanager_secret" "secret_api_key" {
name = "secret_api_key"
}
resource "aws_secretsmanager_secret_version" "secret_api_key" {
secret_id = aws_secretsmanager_secret.secret_api_key.id
secret_string = var.secret_api_key
}
在另一种配置中,秘密是这样读的:
data "aws_secretsmanager_secret" "secret_api_key" {
name = "secret_api_key"
depends_on = [aws_secretsmanager_secret.secret_api_key]
}
data "aws_secretsmanager_secret_version" "secret_api_key" {
secret_id = data.aws_secretsmanager_secret.secret_api_key.id
}
resource "aws_lambda_function" "s3_to_service" {
...
environment {
variables = {
SECRET_ARN = data.aws_secretsmanager_secret_version.secret_api_key.arn
}
}
}
如何强制 terraform 而不是 每次计划时都要求我提供 API 密钥?它需要在我第一次这样做时询问我,以将其存储在机密管理器中。但在那之后,它是多余的。我怎样才能避免这种情况?
不是真的。
要么您每次都手动提供一个值,要么您不这样做,但每次您要评估 Terraform 配置时,Terraform 变量都需要以某种形状、方式或形式指定的值,无论是您还是默认情况下。
如果您 plan/apply aws_secretsmanager_secret
,除非您对值进行硬编码或指定默认值,否则无法手动提供值。
Terraform 的工作原理是计算状态差异 - 它需要知道您的预期状态是什么(使用您的变量值),然后将其与实际状态进行比较。
我会建议您 plan/apply 秘密的 Terraform 配置,当您想要 create/update 它将秘密的创建与秘密的使用分开。
然后,您可以使用 data.aws_secretsmanager_secret.secret_api_key
访问它。
我有以下 HCL 代码,它从 terraform plan
上的终端询问并读取 secret_api_key
变量并将其保存在秘密管理器中。
variable "secret_api_key" {
type = string
sensitive = true
}
resource "aws_secretsmanager_secret" "secret_api_key" {
name = "secret_api_key"
}
resource "aws_secretsmanager_secret_version" "secret_api_key" {
secret_id = aws_secretsmanager_secret.secret_api_key.id
secret_string = var.secret_api_key
}
在另一种配置中,秘密是这样读的:
data "aws_secretsmanager_secret" "secret_api_key" {
name = "secret_api_key"
depends_on = [aws_secretsmanager_secret.secret_api_key]
}
data "aws_secretsmanager_secret_version" "secret_api_key" {
secret_id = data.aws_secretsmanager_secret.secret_api_key.id
}
resource "aws_lambda_function" "s3_to_service" {
...
environment {
variables = {
SECRET_ARN = data.aws_secretsmanager_secret_version.secret_api_key.arn
}
}
}
如何强制 terraform 而不是 每次计划时都要求我提供 API 密钥?它需要在我第一次这样做时询问我,以将其存储在机密管理器中。但在那之后,它是多余的。我怎样才能避免这种情况?
不是真的。
要么您每次都手动提供一个值,要么您不这样做,但每次您要评估 Terraform 配置时,Terraform 变量都需要以某种形状、方式或形式指定的值,无论是您还是默认情况下。
如果您 plan/apply aws_secretsmanager_secret
,除非您对值进行硬编码或指定默认值,否则无法手动提供值。
Terraform 的工作原理是计算状态差异 - 它需要知道您的预期状态是什么(使用您的变量值),然后将其与实际状态进行比较。
我会建议您 plan/apply 秘密的 Terraform 配置,当您想要 create/update 它将秘密的创建与秘密的使用分开。
然后,您可以使用 data.aws_secretsmanager_secret.secret_api_key
访问它。