TerraformでAWSのS3バケットを生成する

Terraformとは

Terraformは、インフラストラクチャのコード化(Infrastructure as Code、IaC)ツールで、ハッシュコープ(HashiCorp)によって開発されました。これを使うと、サーバー、ネットワーク、データベースなど、クラウドインフラストラクチャのリソースをプログラム的に管理・プロビジョニングできます。主要なクラウドプロバイダー(AWS、Azure、Google Cloudなど)のリソースを一貫して扱えるため、複数のクラウド環境でのインフラ管理に便利です。

前提条件の確認・準備

Terraformを実行するユーザの作成と、Terraform、AWS CLIをインストールします。

IAMユーザの作成

AWSマネジメントコンソールのIAMメニューからユーザを作成します。

マネジメントコンソールにはアクセスしないのでチェックはつけず、次に進みます。

S3にアクセスする必要があるので、「AmazonS3FullAccess」ポリシーをアタッチして次に進みます。

ユーザの作成を押下します。

アクセスキーの作成

作成したアカウントを選択します。

セキュリティ認証情報を選択します。

アクセスキーを作成を押下します。

AWSの外部で実行されるアプリケーションを選択します。

タグ値には任意の文字列を記載してアクセスキーを作成します。

後程このアクセスキーは使用するので.csvファイルをダウンロードして保存しておきます。

Terraformのインストール(Windows)

Windows端末にTerraformをインストールします。

Chocolatyのインストール

Chocolatyがインストールされていない場合、管理者としてPowerShellを開き、以下のコマンドを実行してインストールします。

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Terraformのインストール

Chocolatyを使用してTerraformをインストールします。

choco install terraform

バージョン確認

インストールが完了したら、以下のコマンドでバージョンを確認します。

terraform -v

AWS CLIのインストール

AWSとの通信を行うために、AWS CLIを設定します。

インストーラーのダウンロード

AWS CLIのWindows版インストーラーを公式サイトからダウンロードします。

AWS CLIの公式ダウンロードページ

ページにアクセスし、「Windows 64-bit」を選択してインストーラー(msiファイル)をダウンロードします。

インストール手順

  1. インストーラーの実行
    ダウンロードが完了したら、AWSCLIV2.msiファイルをダブルクリックしてインストーラーを起動します。
  2. インストールの手順に従う
    インストーラーの指示に従い、インストールを完了させます。特にカスタム設定は必要なく、デフォルトのオプションでインストールして問題ありません。

インストール確認

インストールが完了したら、「aws –version」コマンドを使用してAWS CLIが正しくインストールされたか確認します。
正常にインストールされていれば、AWS CLIのバージョンが表示されます。例:

AWS CLIの初期設定

インストールが完了したら、AWS CLIがAWSアカウントと連携できるように設定を行います。AWSのアクセスキーとシークレットキーを使って認証情報を設定します。

  1. コマンドプロンプトでAWS CLIの設定コマンドを実行
    以下のコマンドを実行し、アクセスキー、シークレットキー、リージョン、出力形式を設定します。
aws configure
  1. プロンプトに従って情報を入力
    以下のように、AWSアカウントに対応する情報を入力します。
AWS Access Key ID [None]: あなたのアクセスキーID
AWS Secret Access Key [None]: あなたのシークレットキー
Default region name [None]: us-east-1 # 使用するリージョン(例:us-east-1)
Default output format [None]: json # 出力形式(例:json)

Terraformの実行

ダウンロードしたTerraformを使用してS3バケットを作成します。

Terraformプロジェクトの初期化

Terraformは、作業ディレクトリの中で動作するため、まずディレクトリを作成します。

mkdir terraform-aws-demo
cd terraform-aws-demo

その後、.tfファイルを作成します。これはTerraformの設定ファイルです。main.tfという名前で作成します。

main.tfの作成(AWSプロバイダーの設定)

TerraformがAWSに接続できるように、AWSプロバイダーを設定します。プロバイダーはTerraformが操作するクラウドやオンプレミスの環境にアクセスするための設定です。

以下は、AWSプロバイダーを設定するmain.tfファイルの例です。

# AWSプロバイダーを指定
provider "aws" {
region = "us-east-1" # 使用するAWSリージョン
}

main.tfの作成(リソースの定義)

S3バケットを作成するシンプルな構成です。

# ランダムなバケット名を生成
resource "random_pet" "bucket_name" {
length = 2
}

# S3バケットの作成
resource "aws_s3_bucket" "example" {
bucket = "my-bucket-${random_pet.bucket_name.id}" # ランダムなバケット名を追加
acl = "private"

tags = {
Name = "MyS3Bucket"
}
}

Terraformの初期化

Terraformを使用する前に、プロジェクトの初期化を行います。これにより、Terraformは必要なプロバイダー(この場合はAWS)をダウンロードします。

terraform init

Terraformによる計画の確認

リソースを適用する前に、実際にどのような変更が行われるかを確認するために、terraform planコマンドを実行します。これにより、Terraformは構成ファイルに基づいて作成されるリソースのリストを表示します。

terraform plan

Terraformの実行(リソースの作成)

計画を確認したら、terraform applyコマンドを実行してリソースを実際に作成します。コマンド実行後、確認を求められるので、yesと入力してリソース作成を開始します。

terraform apply

問題なく実行が完了しました。

AWSマネジメントコンソールを確認するとterraformで作成したS3バケットが存在することを確認できます。

このようにTerraformを使用することでコンソールから自由にAWSのリソース等を生成することが出来ます。