[英]Is it possible to set up a multiuser secret rotation in AWS secrets manager with terraform?
[英]upload file into AWS Secrets Manager using Terraform
為了使 Terraform 成功將命名文件上傳到 AWS Secrets Manager 中的密鑰,需要對以下示例的語法進行哪些具體更改?
請注意,運行 Amazon Linux 2 的 AWS EC2 實例也是由相同的 Terraform 模塊創建的,需要從 Secrets 管理器中檢索此文件。 同一個 Amazon Linux 2 EC2 實例已經能夠從同一個 AWS Secrets Manager 中成功檢索字符串機密。 因此,這個問題被隔離到上傳一個文件而不是一個短字符串。
如果無法上傳文件 object,那么第二個最佳答案將顯示如何上傳文件的文本內容。 請注意,該文件是一個 x509 證書,EC2 實例中運行的程序需要使用該證書。 文本內容是x509證書的典型長度,是比較小的文本量。
當前代碼:
variable "certFileAndPath" { default = "C:\\path\\to\\the\\x509\\certificate.crt" }
resource "aws_secretsmanager_secret" "example-cert" {
name = "example-cert"
recovery_window_in_days = 0
}
resource "aws_secretsmanager_secret_version" "cert-val" {
secret_id = aws_secretsmanager_secret.example-cert.id
secret_binary = filebase64(var.certFileAndPath)
}
目前的結果:
目前,上面的 Terraform 代碼導致None
被檢索秘密的cloud-init
腳本回顯。 而且,當人類用戶試圖閱讀確實由下面創建的秘密內容時,秘密管理器的 AWS web UI 控制台不會顯示任何內容。 Terraform 運行上面的代碼沒有拋出錯誤。
在生成的 EC2 實例的/var/log/cloud-init-output.log
中回顯None
的cloud-init
bash userdata 命令是:
echo "example-cert is: \n"
echo $(aws secretsmanager get-secret-value --secret-id "example-cert" --version-stage AWSCURRENT --region "${var._region}" --output text --query SecretString)
如果您使用的是secret_binary
,則在 AWS CLI 中您應該使用SecretBinary
:
aws secretsmanager get-secret-value --secret-id "example-cert" --version-stage AWSCURRENT --region "${var._region}" --output text --query SecretBinary
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.