terraform V12:错误导入KeyPair:MissingParameter:请求必须包含参数PublicKeyMaterial

问题描述

得到错误“导入KeyPair:MissingParameter:当我运行“ terrain apply”时,请求必须包含参数PublicKeyMaterial。这个错误是什么意思。

resource "aws_instance" "ec2_test_instance" {
  ami           = var.instance_test_ami
  instance_type = var.instance_type
  subnet_id     = var.aws_subnet_id
  key_name      = aws_key_pair.deployer.key_name

  tags = {
    Name = var.environment_tag
    }
   provisioner "local-exec" {
    command = "echo ${self.public_ip} > public-ip.txt"
    }
   provisioner "remote-exec" {

     connection {
        type    = "ssh"
        host    = self.public_ip
        user    = "centos"
        private_key   = file("${path.module}/my-key")
        }

    inline = [

        "sudo yum -y install wget,unzip","sudo yum -y install java-1.8.0-openjdk"
    ]
   }
}

解决方法

假设其他所有内容均正确,则connection块应位于provisioner内,而不应位于其外:

resource "aws_instance" "ec2_test_instance" {

  ami           = var.instance_test_ami
  instance_type = var.instance_type
  subnet_id     = var.aws_subnet_id
  key_name      = aws_key_pair.deployer.key_name  


  provisioner "remote-exec" {

    connection {
      type    = "ssh"
      host    = self.public_ip
      user    = "centos"
      private_key   = file("${path.module}/my-key")
    }

    inline = [
        "sudo yum -y install wget,unzip","sudo yum -y install java-1.8.0-openjdk",]
   }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...