LoginSignup
3
1

More than 3 years have passed since last update.

TerraformでSSHキーがインポートできなかった

Posted at

しょーもないことなのですが、若干時間かかったので。

やろうとしたこと

TerraformでEC2インスタンスを作成する際にSSHキーをインポートしたかった。

出たエラー

planが通ったのでapplyすると...

$ terraform apply -var-file=vars.tfvars

こういう感じで怒られました。

Error: Error import KeyPair: InvalidKey.Format: Key is not in valid OpenSSH public key format
        status code: 400, request id: 28fb3e7c-653f-41c2-a2ec-212d69b8a5e9

該当箇所のコード

main.tf
#略

# SSH key for EC2
resource "aws_key_pair" "ec2-key-pair" {
  key_name   = var.ssh_key_name
  public_key = var.ssh_key_path
}

#略

変数ファイルと値は以下のような感じです

variables.tf
# AWS credential
variable "access_key" {}
variable "secret_key" {}


# EC2 SSH key
variable "ssh_key_name" {}
variable "ssh_key_path" {}

# AMI id
variable "ami_id" {}

vars.tfvars
access_key   = "XXXXXXXXXXXXXXXXXXXX"
secret_key   = "XXXXXXXXXXXXXXXXXXXX"
ssh_key_name = "terraform_test_rsa"
ssh_key_path = "~/.ssh/terraform_test_rsa.pub"
ami_id       = "ami-00000000000000"

とりあえず公式を確認してみる

スクリーンショット 2021-04-14 20.56.56.png

鍵ファイルの中身自体をpublic_keyの値に持たせるのが正解らしいです。全然読んでませんでした。
で、さらに確認するとこういう関数があるみたいでして...

ということで修正します。

修正

main.tf
# SSH key for EC2
resource "aws_key_pair" "ec2-key-pair" {
  key_name   = var.ssh_key_name
  public_key = file(var.ssh_key_path)
}

これで再度applyするとうまく実行されました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1