Terraform 获取aws_实例的密钥对名称

Terraform 获取aws_实例的密钥对名称,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我的目标是编写一个Terraform定义,它将创建一个新的AWS EC2实例。在我的AWS项目中,我知道将有一个密钥对定义。我知道这将是唯一的密钥对定义。没有人告诉我钥匙对的名字 要创建EC2实例,我必须定义: resource "aws_instance" "myinstance" { ... key_name="<KEY_NAME_STRING>" ... } 资源“aws\u实例”“myinstance”{ ... key_name=“” ... } 这就是我的

我的目标是编写一个Terraform定义,它将创建一个新的AWS EC2实例。在我的AWS项目中,我知道将有一个密钥对定义。我知道这将是唯一的密钥对定义。没有人告诉我钥匙对的名字

要创建EC2实例,我必须定义:

resource "aws_instance" "myinstance" {
  ...
  key_name="<KEY_NAME_STRING>"
  ...
}
资源“aws\u实例”“myinstance”{
...
key_name=“”
...
}
这就是我的谜题。我的希望是只使用Terraform定义,而不使用用户交互。目前,我要求用户打开AWS控制台,找到密钥对名称,并使用他们找到的密钥对名称编辑地形定义。理想情况下,我希望Terraform查询AWS环境,检索密钥对列表,并选择列表中的第一个(唯一)项用于实例创建。不幸的是,我并没有找到任何方法来实现这一点


有人看到我可能研究的技术或解决方案吗?同样,我们假设我只有Terraform,没有AWS CLI或其他在Terraform环境之外无法使用的工具。

我假设您无法使用Terraform?Howdy@pijemcolu实际创建/管理密钥对。。。事实上,确实有一个很好的机制来创建一个新的密钥对。我的困惑是,我必须重新利用已经存在的东西。背后的故事是,我需要使用的AWS环境是“部分”预配置的,目标是重用已经存在的现有密钥对定义。我意识到这是一个很奇怪的故事。。。但是,想想一个实验室练习环境,其中预先提供了密钥和密钥对,学生必须使用这些密钥和密钥对(我正在构建一个供学生使用的Terraform实验室)。一些Terraform提供程序/资源提供了一个等效的数据源,这可能使您能够读取所需的aws密钥对属性。但是,aws密钥对的数据源不存在。因此,我相信,在你为自己创造的约束条件下,这是不可能的。你也可以:1。在空提供程序或脚本提供程序中使用AWS CLI编写密钥查找脚本,或。。。2.使用terraform
aws\u密钥对创建密钥
resource 3。将密钥导入预先创建的地形资源。