如何从秘密管理器中获取私钥?

How to get private key from secret manager?

我需要在 AWS 中存储私钥。因为当我从 AWS 创建一个 ec2 实例时,我需要使用这个主键在配置程序“remote-exec”中进行身份验证。我不想保存在 repo AWS 中。

在 Secret Manager 中保存私钥是个好主意吗?然后消费?

在肯定的情况下,如何将主键保存在 Secret Manager 中,然后在 TF 中检索 aws_secretsmanager_secret_version?

就我而言,如果我从文件 () 进行验证,它可以正常工作,但如果我从字符串进行验证,则会失败。

connection {
    host = self.private_ip
    type = "ssh"
    user = "ec2-user"
    #private_key = file("${path.module}/key")   <-- Is working
    private_key = jsondecode(data.aws_secretsmanager_secret_version.secret_terraform.secret_string)["ec2_key"]    <-- not working. Error: Failed to read ssh private key: no key found
}

我认为原因在于你如何储存它。我 验证 使用我自己的沙箱帐户 aws_secretsmanager_secret_version 并且它有效。但是,我将其存储为痛苦文本,而不是 json:

然后我成功使用如下实例:


resource "aws_instance" "public" {
  ami           =  "ami-02354e95b39ca8dec" 
  instance_type = "t2.micro" 
  key_name      = "key-pair-name"
  security_groups = [aws_security_group.ec2_sg.name]
  
  provisioner "remote-exec" {
  
    connection {
      type     = "ssh"
      user     = "ec2-user"
      private_key = data.aws_secretsmanager_secret_version.example.secret_string
      host     = "${self.public_ip}"
    }
  
    inline = [
      "ls -la"
    ]
  }
  
  depends_on = [aws_key_pair.key]
  
}