
TerraformをAWSで使ってみた!導入からインスタンス作成まで
2021.12.20
TerraformをAWSで使ってみよう!

(株)ライトコードの小山(こやま)です!
アメリカの HashiCorp 社が開発した、インフラ構築や設定などもコード化できる、「Terraform」というツール。
ネットワーク構築も自動化できるとあって、エンジニアの間でも、人気のツールとなっていますね!
というわけで今回は、そんな話題の Terraform を「AWS」で使ってみたいと思います。
Terraform 導入から、インスタンス作成までを試していくので、ぜひ一緒にチャレンジしてみてくださいね!
今回の構築環境
本記事では、下表のような環境を前提に、執筆されています。
OS | macOS 10.15.7 |
AWS | 登録済み |
AWS CLI | 導入済み |
Homebrew | 導入済み |
Terraform | Terraform v0.13.5(記事の中で導入します) |
では早速、はじめていきましょう!
Terraformの環境導入とAWSの設定
Terraform の環境を導入
Homebrew を利用して、Terraform の環境を導入します。
1 | $ brew install terraform |
導入できたかどうかを確認するために、以下のようなバージョン確認コマンドを入力します。
1 | $ terraform --version |
バージョン情報が表示されたら、環境導入は成功です。
AWSのクレデンシャルの設定
今回は、Terraform を利用して、AWS のリソースを作成していきます。
そのために、まず AWS のクレデンシャルの設定を行っておきましょう。
AWS のクレデンシャル(アクセスキー及びシークレットキー)は、AWS コンソールの IAM より発行できます。
発行できたら、クレデンシャルを、環境変数に登録します。
1 2 3 | $ export AWS_ACCESS_KEY_ID=発行したアクセスキーを入力 $ export AWS_SECRET_ACCESS_KEY=発行したシークレットキーを入力 $ export AWS_DEFAULT_REGION=ap-northeast-1 |
ご利用のリージョンが東京でない方は、「AWS_DEFAULT_REGION」を、ご利用のリージョンに設定してください。
Terraformを実際に使ってみる
「tfファイル」を作成
まずは、任意の名前でディレクトリを作成し、そこへ移動します。
1 2 | $ mkdir hoge $ cd hoge |
次に、以下のコマンドで、Terraform のファイルを作成してください。
1 | $ touch main.tf |
拡張子「tf」のファイルを作成すると、Terraform がテンプレートとして認識します。
「main.tf」を編集
続いて、main.tf の内容を、次のように編集していきましょう。
1 | $ vim main.tf |
1 2 3 4 5 6 7 | resource "aws_instance" "hoge" { ami = "ami-0f9ae750e8274075b" instance_type = "t3.micro" tags = { Name = "hogehoge" } } |
インデントが整う便利コマンド
ここで、Terraform の便利なコマンドを利用します。
1 | $ terraform fmt |
上記のコマンドを入力すると、拡張子が「tf」のファイルのインデントなどを整えてくれます。
実際に入力したら、インデントが整っているかを、確認してみてください。
1 | $ cat main.tf |
1 2 3 4 5 6 7 8 | resource "aws_instance" "hoge" { ami = "ami-0f9ae750e8274075b" instance_type = "t3.micro" tags = { Name = "hogehoge" } } |
キレイに整いましたね!
「main.tf」のコードの意味
main.tf では、AWS の EC2 インスタンスを作成するコードを実装しています。
aws_instance の内容を変更すれば、EC2 以外のリソースも作成することができます。
今回は、EC2 のインスタンスを作成するので、AMI とインスタンスのタイプを設定しておきました。
ちなみにインスタンスのタイプは、
- nano
- micro
- large
など、様々なサイズがあります。
基本的には、費用を抑えるために、なるべく小さいサイズを選ぶと良いかと思います。
また、最後の tags では、その名の通り、タグを設定しています。
必須ではありませんが、設定しておくと AWS コンソールで確認しやすくなるので、ぜひ活用してみてください。
「main.tf」のエラーの解消と実行
さて、main.tf ですが、今のまま実行するとエラーとなってしまいます。
試しに実行してみます。
1 | $ terraform apply |
1 2 | Error: Could not load plugin ... |
「プラグインを読み込めない」というエラーが出てしまいました…。
このエラーを解消するために、次のコマンドを実行して、プラグイン環境を整えます。
1 | $ terraform init |
そして、次のコマンドを実行します。
1 | $ terraform plan |
「何がどうなるのか」を、教えてくれるはずです。
内容を確認して問題がなければ、実行コマンドを再度入力してみましょう。
1 | $ terraform apply |
実行して良いかどうか尋ねられるので、「yes」と入力すると実行されます。
実行されたら、下記のコマンドを入力してください。
1 | $ terraform show |
「resource "aws_instance" "hoge"」と、その詳細が表示されたら成功です!
インスタンスの確認 & 後処理をする
AWS のコンソールを開いて、EC2 を確認すると、インスタンスが作成されているはずです。
AWS の EC2 インスタンスは、起動したままだと料金がかかるので、終了させておきましょう!
次のコマンドで、作成したリソースを、削除することができます。
1 | $ terraform destroy |
再び、実行して良いかどうか尋ねられるので、「yes」を入力し実行します。
実行されたら再度、下記コマンドを入力します。
1 | $ terraform show |
リソースを削除する「destroy」コマンドを実行したあとは、何も表示されないはずです。
以上が、Terraform の基本の流れとなります。
さいごに
今回の記事では、以下の流れで作業をしていきました。
- tfファイルを作成
- init
- plan
- apply
- show
- destroy
- show
基本的には、今回の流れで Terraform を操作することになるかと思います。
ただ、「show」や「destroy」については、使わないこともあります。
アクセスキーやシークレットキーなどのクレデンシャルは、外部に流出すると大変なことになるので、扱いにはご注意ください。
また、Terraform で作成したリソースについても、適切に管理しないと AWS の使用額がとんでもないことになってしまいます。
さて今回は、特に認知度の高い AWS を用いました。
Terraform は、Azure や Heroku など、様々なサービスにも対応しています。
これを機に、Terraform を活用して、業務の効率化を目指してみるのも良いですね!
こちらの記事もオススメ!
書いた人はこんな人

IT技術10月 31, 2023Cloud Runのいろんな設定を確認してみた
IT技術6月 5, 2023【ISUCON部】ISUCONの存在を知らなかったけど、ISUCON部に参加してみた
IT技術5月 12, 2022DockerでRails環境を構築してみた
ライトコードの日常1月 25, 2022YOUは何しにライトコードへ?〜こやまん編〜