簡體   English   中英

使用 Terraform 將文件上傳到 AWS Secrets Manager

[英]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中回顯Nonecloud-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM