Terraform 入門：MacBookからTerraformを使ってS3バケットを作成する方法を体系的に解説してみた

## はじめに

Terraformはインフラをコードとして管理できるツールであり、AWSのリソースを簡単にプロビジョニングできます。

***この記事では、MacBookを使ってTerraformを活用し、AWSを管理する方法を紹介します。***

## 書こうと思ったきっかけ

AWSのリソースを手動で管理すると、設定ミスが発生しやすく、再現性も低くなります。

:::note info
**Terraformを使うことで、インフラの状態をコードで管理し、チーム内で統一した管理が可能になります。**
:::

実際にMacBookでTerraformをセットアップし、AWSを操作する方法をまとめることで、同じように始める人の参考になればと思い、本記事を書きました。

## 1. 必要なツールのインストール

### ① Homebrewのインストール（未導入の場合）
Macのパッケージ管理ツールであるHomebrewをインストールします。
```sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
Homebrewがインストールされているか確認:
```sh
brew -v
```

### ② Terraformのインストール
TerraformをHomebrewでインストールします。
```sh
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
```
インストール後、バージョンを確認:
```sh
terraform -v
```

### ③ AWS CLIのインストール
TerraformでAWSを操作するために、AWS CLIもインストールします。
```sh
brew install awscli
```
バージョンを確認:
```sh
aws --version
```

## 2. AWSの認証情報を設定

### ① AWSの認証情報を設定
AWS CLIを使って認証情報を設定します。
```sh
aws configure
```
以下のような入力を求められます:
```
AWS Access Key ID [None]: (AWSのアクセスキー)
AWS Secret Access Key [None]: (AWSのシークレットキー)
Default region name [None]: ap-northeast-1  # 東京リージョン
Default output format [None]: json
```

AWSのアクセスキーとシークレットキーはIAMコンソールから取得してください。

設定された認証情報を確認:
```sh
cat ~/.aws/credentials
```

## 3. Terraformの初期設定

### ① 作業ディレクトリを作成
Terraformの設定を管理するディレクトリを作成し、移動します。
```sh
mkdir terraform-aws
cd terraform-aws
```

### ② Terraform設定ファイルを作成
`main.tf` ファイルを作成し、以下の内容を記述します。
```hcl
provider "aws" {
  region = "ap-northeast-1"  # 東京リージョン
}

resource "aws_s3_bucket" "example" {
  bucket = "my-terraform-bucket-12345"
  acl    = "private"
}

output "bucket_name" {
  value = aws_s3_bucket.example.bucket
}
```

## 4. Terraformの実行

### ① Terraformの初期化
Terraformを初期化します。
```sh
terraform init
```

**実際のターミナル画面**

![Screenshot 2025-03-03 at 15.41.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/24b0d704-3425-4348-83b9-3b95645eea5a.png)

これにより、必要なプロバイダー（AWS）などがダウンロードされます。

### ② 実行プランの確認
Terraformの実行プランを確認します。
```sh
terraform plan
```

ここで、AWSに作成するリソースの詳細が表示されます。

### ③ 適用（実際にAWSへリソースを作成）
```sh
terraform apply
```

**実際のターミナル画面**

![Screenshot 2025-03-03 at 15.42.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/ce2821a0-c0fb-4b32-b935-cdcff7a51a73.png)

確認メッセージ `Do you want to perform these actions?` が出たら `yes` と入力。

作成が完了すると、S3バケットが作成されます。

## 5. 確認
AWSコンソールで `S3` を開き、指定したバケット `my-terraform-bucket-xxx` が作成されていることを確認してください。

**実際のマネコン画面**

![Screenshot 2025-03-03 at 15.43.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/cb017063-bd6b-441f-b660-61c70d419e89.png)

## 6. Terraformの後片付け
AWSに作成したリソースを削除する場合は以下のコマンドを実行:
```sh
terraform destroy
```

**実際のターミナル画面**

![Screenshot 2025-03-03 at 15.56.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/4d64f8b0-29f0-4be3-b96c-58b8632dc6f3.png)

`yes` と入力すれば、AWS上のリソースが削除されます。

## まとめ
- Terraform・AWS CLIをインストール
- AWSの認証情報を設定
- Terraformの設定ファイル（`main.tf`）を作成
- Terraformの初期化 (`terraform init`)
- Terraformの実行 (`terraform apply`)
- リソース削除 (`terraform destroy`)

これでMacBookからTerraformを使ってAWSを管理できるようになります。さらに、EC2やLambdaなどの追加リソースも同様の手順で作成できます。