はじめに
本記事はTerraformについて初心者の私が、新規にS3のバケットを構築した際の手順をまとめたハンズオン形式の記事になります。
手探り状態で作成したのでより良い書き方等はまた勉強しておきます。
Terraformとは?
Terraformは、インフラストラクチャをコード(Infrastructure as Code、IaC)として管理するためのツールです。マルチクラウド(AWS、GCP、Azureなど)に対応しています。
本記事のゴール
TerraformでS3のバケットを構築してみる
前提
本記事ではTerraformでの環境構築が終わっている事を想定しています。
まだ終わってない方は下記の記事から環境構築をお願いします。
環境
- Terraform v1.7.4
- PowerShell
IAMアカウントを準備する
リソースを作成する用のIAMアカウントを準備します。
コンソールからIAMを選択し、アクセス管理 > ユーザ > ユーザの作成 を選択します。
アタッチするポリシーとしては、S3のフルアクセス権限(AmazonS3FullAccess)を設定しておきます。
続いてプロファイル名を設定するため、作成したIAMアカウントのアクセスキーとシークレットキー情報を取得します。
セキュリティ認証情報タブからアクセスキー > アクセスキーを作成 > ローカルコードにチェックを入れアクセスキーを作成します。
アクセスキーが作成出来たら、アクセスキーとシークレットキーをメモしておいてください。
アクセスキー、シークレットキーについては表示画面を閉じると再度確認はできないので、忘れないように保存しておく事に注意してください。
プロファイルの設定
続いてAWSのcredentials
ファイルにアクセスキーとシークレットキーの情報を追記していきます。
本記事で使用する用のプロファイル名を新たに作成します。
プロファイル名はなんでもよいですがここでは terraform_tt
とし、以下のように先ほど取得したアクセスキーとシークレットキーを記載しておきます。
~~~
[terraform_tt]
aws_access_key_id = XXXXX
aws_secret_access_key = WWWWW
~~~
記載が完了したら保存してファイルをとじておき、以下のコマンドで問題なくプロファイル名の設定を追記できているか確認します。
cat ~/.aws/credentials
新しく追記したプロファイルが表示される事を確認し、次にソースの作成を進めていきます。
ソース
詳細はコメントアウトの通りです。
sample-bucket-terrafomr-test-0524
という名前のバケットを作成します。
terraform {
// terraformのバージョンを指定
required_version = ">= 1.5.1"
// awsプロバイダーのバージョンを指定
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.16"
}
}
}
// awsプロバイダーの設定
provider "aws" {
// 東京リージョンを指定
region = "ap-northeast-1"
// 上記で作成したプロファイル名を指定
profile = "terraform_tt"
}
// s3バケットを作成
resource "aws_s3_bucket" "sample" {
bucket = "sample-bucket-terrafomr-test-0524"
}
実行 & 結果確認
ここまでできたら、下記のコマンドを順に実行しS3バケットのリソースを作成します。
Terraformプロジェクトの初期化を行います。
terraform init
変更内容を確認します。今回はS3バケットを新規構築するので、想定通りの内容になっているか確認いたします。
terraform plan
最後に下記コマンドでリソースを構築します。
terraform apply
上記コマンドを実行した後に、AWSのコンソールからS3のバケットを確認すると対象のリソースが作成されていることを確認できました。