5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者LAB】TerraformでEC2 Instanceを構築

5
Last updated at Posted at 2026-04-09

TerraformでEC2 Instanceを構築してみよう

【はじめに】
現在、EC2 InstanceをGUIで数クリックですぐ構築できる素晴らしい技術がある反面、同じ設定でInstanceを起動したいとき、同じ作業を何回もやらなければならないのは地道で大変だしヒューマンエラーも起きてしまいますよね。
そこで、今回はTerraformに設定を保存して、いつでも迅速にInstanceの起動・停止を可能にできる環境の構築をしていきたいと思います。

それじゃあやってみよ〜!

<目次>
・Terraform扱い方
・EC2インスタンス設定方法
・ssh接続方法

【前提】
・Terraformがインストールされていること(無料)
・AWSアカウントが作成されていること(無料)

『Terraform扱い方』

早速、Terraformで設定していくためのディレクトリを作成します。
私はVSCode経由のターミナルで作成していきますが、お好きなエディタ等で編集してください。
ファイル場所は任意ですので、今回はデスクトップに保存します。(ちなみに私はMacOSです)

mkdir -p /Users/macuser/Desktop/terraform

では、作業ディレクトリに移動し、ファイルを作成しておきましょう。

cd /Users/macuser/Desktop/terraform

ここまで行ったら、VSCodeの編集画面で作業していきます。
やり方はいろいろありますが、せっかくなのでショートカットキーなんかを使いながら作成してみます。

Screenshot 2026-04-04 at 15.08.10.png

上の画面になったら、下記を実施します。
もし、ショートカットが嫌な方は、左上のOpen Editorsの右隣にあるプラスボタンを押せばファイルが作成できます。

Command (Ctl) + n ⇨新規ファイル作成

カレントディレクトリ内にファイルが作成され、保存しようとすれば勝手にそのディレクトリが表示されるので楽です。

作成したら早速記入していきましょう。

まずは、下記のように書きます。

Screenshot 2026-04-04 at 15.16.01.png

"provider"の部分は使いたいサービスを指定します。今回はawsを使用したいので、awsと記入。
"region"は、awsのリージョンを指定します。今回は東京の"ap-northeast-1"でInstanceを作成していきたいと思います。

"profile"だけは少し厄介です。ここではAWS CLIとの連携が必要になるので、その作業をやっていきます。

このURLに行けばAWS CLIのインストールができるので、ない人はURLにいき、自分の環境に合ったものをインストールしてください。

完了したら、AWSアカウントでAccess Keyを作成します。

Screenshot 2026-04-04 at 15.29.01.png

AWSアカウントログイン後、右上に見える名前をクリックし、Security credentialsをクリックすると下記のような画面がありますので、Access Keyをそこで作成していきます。
作成後は、そこで出てくる、2種類のキーを使うので、頭に入れておきます。

Screenshot 2026-04-04 at 15.29.21.png

次に、Terminalを開き、下記コマンドを実施後、それぞれ取得したAccess Key等を入力していきます。

aws configure

こんな感じです。Default region等は特にしていなければそのままでもOKです。

本来、Access Key等は絶対に他者に教えないようにしてください。

Screenshot 2026-04-04 at 15.41.39.png

そうすると、ターミナルから.awsのディレクトリに行くと欲しい情報が隠されています。

cd .aws
cat credentials

Screenshot 2026-04-04 at 15.50.33.png

実行後の画面を見ると、[default]と書かれていることがわかりました。これがここの"default"にかかってきます。他の名前があると上手く機能しないのでよく確認してください。

Screenshot 2026-04-04 at 15.16.01.png

それでは、完成したので、ここでプロバイダーであるawsをダウンロードするために下記を実行します。
これをすることで、ようやく書いた設定内容をawsに反映する土台が作成できます。

terraform init

カレントディレクトリにTerraformのconfigファイルがないと上手く機能しませんので注意。
必ず作成したterraformディレクトリに移り、その中にconfigファイルがあることを確認してください。

※失敗バージョンと成功バージョンが載っています⇩⇩

Screenshot 2026-04-04 at 16.01.31.png

ここまで来たら、Instanceを作成していきましょう。
一旦の完成系はこのようになります。細かく見ていきましょう。

Screenshot 2026-04-04 at 16.14.15.png

それぞれ項目がありますが、単にGUIで設定していたことをここに明記しているだけなので難しく考える必要はありません。

名前 内容
app_server terraform内での名前
ami Linuxとか、Ubuntuとか。ここではidのようなもので指定
instance_type 無料のt2.microを設定
key_name ssh接続ように使用する鍵の名前
vpc_security_group_ids セキュリティグループのIDを記載
tags 管理しやすくするためのタグ

terrafom作成時の文法やフォーマットは、VSCodeで作成するとかなりアシストしてくれるので、そこまで知らなくても今回はOKです。詳しく知りたい方は公式ドキュメント参照してください。

次に、セキュリティグループを作成していきます。
完成系はこちら。こちらも同様に細かく見ていきましょう。

Screenshot 2026-04-04 at 16.23.38.png

ここでもテーブルに内容を記載しておきます。それぞれの内容の深掘りはまたの機会として、今回はこのまま残りのsshキー作成&Instance起動を行い、終了しましょう。

名前 内容
ssh_connection terraform内での名前
name セキュリティグループの名前
ingress インバウンドの設定
from_port ポート設定
to_port ポート設定
protocol プロトコル設定
cidr_blocks アクセス許可するIPの設定

『SSH鍵の作成方法』
ここまで来たらあとは鍵を作成して、インスタンス起動してアクセスして終わりです。ラストスパートに差し掛かりましょう。

まず、自分のIPとのSSH接続をセキュリティグループで設定したので、自分のターミナルから作業を行います。

AWSのGUIを操作すればすぐ作成できますが、今回はコマンドを実行して作成してみましょう。

ssh-keygen -t ed25519 -f ~/.ssh/my-key

パスワードが聞かれるので、自分でパスワードを入力し作成します。
実行後はmy-keyとmy-key.pubが作成されます。
鍵のファイルは権限を変えて安全に保管しておきましょう。

chmod 400 ~/.ssh/my-key

次に、公開鍵をaws側に登録したいので、以下コマンドを実行します。

aws ec2 import-key-pair \
  --key-name my-key \
  --public-key-material fileb://my-key.pub

これで、ローカルで作成した公開鍵をEC2 Instanceで使用できるようになったはずです。

fileb://の後ろは、相対パスか絶対パスにしてください。
今回は鍵のあるディレクトリにいるので、ファイル名のみの記載にしてます。
例:fileb://~/.ssh/my-key.pub

あとはterraformから起動させてみて、検証してみましょう!
起動させるコマンドは下記です。

terraform apply

実行後、こんな形で聞かれるので、yesと打てば作成されます。最後に緑色の箇所が出てくればOKです。

Screenshot 2026-04-04 at 17.12.07.png

では早速ssh接続してみましょう。接続するためのIPアドレスの調べ方⇩
instanceのあとは、terraformのconfigファイルで指定したterraform内の名前です。

terraform state show aws_instance.app_server

たくさん情報が入っていますので、パブリックIPを探すのが面倒であればgrepで指定しましょう。

terraform state show aws_instance.app_server | grep public_ip

いよいよ、SSH接続をして終了です。

ssh -i ~/.ssh/my-key ubuntu@public_ip

私は今回Ubuntuのamiを選択していたので、ubuntu@となりますが、ご自分の環境に合わせて調整してください。

パブリックIPはInstance起動するごとに変わるので、繋がらないと思ったら要確認

Screenshot 2026-04-04 at 17.24.17.png

最終的にログインできて、緑のような形でプロンプトが表示されれば完成です!

Screenshot 2026-04-04 at 17.24.26.png

5
0
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
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?