我有以下 HCL 代碼,它secret_api_key從終端上詢問并讀取變數terraform plan并將其保存在秘密管理器中。
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
}
在另一種配置中,secret 是這樣讀取的:
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 密鑰?它需要在我第一次這樣做時詢問我,將其存盤在機密管理器中。但在那之后,它是多余的。我怎樣才能避免這種情況?
uj5u.com熱心網友回復:
并不真地。
您可以每次都手動提供一個值,也可以不提供,但是 Terraform 變數需要以某種形狀、方式或形式指定的值,無論是您還是默認情況下,每次您想要評估 Terraform 配置時。
如果您計劃/申請aws_secretsmanager_secret,除非您對值進行硬編碼或指定默認值,否則無法手動提供值。
Terraform 的作業基于計算狀態差異 - 它需要知道您的預期狀態是什么(以及您的變數值),然后將其與實際狀態進行比較。
我建議您在想要創建/更新機密時為機密計劃/應用 Terraform 配置,并將機密的創建與機密的使用分開。
然后,您可以使用data.aws_secretsmanager_secret.secret_api_key它來訪問它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/344657.html
標籤:亚马逊网络服务 地形 terraform-provider-aws aws-secrets-manager
