2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terraformを使ってs3バケットを作成する方法

Last updated at Posted at 2023-03-25

概要

Terraformについて理解を深める為、Terraformを使用してAWSのs3バケットを作成してみました。毎度ながら、備忘録の意味も含めて記載します。

ディレクトリー構成

Terraformを使用してS3 bucketの作成が完了すると下記のディレクトリー構成になるかと思われます。

.
├── .terraform
├── modules/
│   └── aws_s3_bucket.tf
├── .gitignore
├── .terraform.lock.hcl
├── main.tf
├── providers.tf
├── terraform.tfstate
├── terraform.tfstate.backup
├── terraform.tfvars
├── variables.tf
├── versions.tf
└── README.md

構築手順

 今回の設定ですと1つのファイルでできますが、勉強も兼ねてる為、ファイルを分離させて構築を行なっております。

versions.tf

TerraformのバージョンやAWSのバージョンを設定する必要がある為、versions.tfに記述します。

terraform {
  // Terraform本体に対するバージョン制約
  required_version = ">= 0.15"

  required_providers {
    aws = {
      source = "hashicorp/aws"
      // Providerに対するバージョン制約
      version = "4.59.0"
    }
  }
}

providers.tfの作成

 プロバイダを指定する必要がある為、providers.tfを作成します。今回はAWSを使用する為、AWSのプロパイダーを指定します。また、AWSに接続する為、AWSの認証情報も記述しています。
※ AWSの認証情報を記述する必要がある為、変数で定義しております。

// 変数は、"${var.〇〇}"と記述する
provider "aws" {
  region  = "${var.region}"
  profile = "${var.profile}"
  access_key = "${var.aws_access_key}"
  secret_key = "${var.aws_secret_key}"
}

variables.tfの作成

providers.tfに、AWSの認証情報の変数を記述した為、、variables.tfにAWSの認証情報を記載します。
※ 認証情報の設定は、他にもやり方があるので、下記のサイトを参考に設定して頂いても大丈夫です。

# 変数の設定
variable "aws_access_key" {}
variable "aws_secret_key" {}
variable "region"{}
variable "profile"{}

terraform.tfvarsの作成

terraform.tfvarsにAWSの認証情報を記述します。

aws_access_key="********************" // aws_access_key_idを記述
aws_secret_key="****************************************" // aws_secret_access_keyを記述
region="**************" // 好きなregionを設定
profile="*********" // 設定していれば記述する

main.tfの作成

S3バケットを作成する記述をmodulesファイルのaws_s3_bucket.tfに設定している為、aws_s3_bucket.tfの記述内容を読み込ませる情報を記述する。
※ ファイル名は任意の名前でも大丈夫です。

module "s3" {
  source = "./modules"
}

// moduleの書き方
module "リソースの名前" {
    source = "モジュールを定義したフォルダのパス"
    パラメーター名 = "パラメーター値"
}

aws_s3_bucket.tfの作成

まず、ルートディレクトリーにmodulesと記述したディレクトリーを作成する。次に、そのディレクトリーの中に、aws_s3_bucket.tfのファイルを作成して、s3バケットを作成するコードを記述する。
※ ファイル名とディレクトリー名は、任意の名前でも大丈夫です。

// S3のbucketを作成する
resource "aws_s3_bucket" "this" {
  bucket = "terraform-sample-bucket"

  tags = {
    Name = "terraform-sample"
  }
}

// パブリックアクセスをブロックする設定
resource "aws_s3_bucket_public_access_block" "this" {
  bucket                  = aws_s3_bucket.this.bucket
  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

resource "aws_s3_account_public_access_block" "this" {
  block_public_acls   = false
  block_public_policy = false
}

.gitignoreの作成

.gitignoreのファイルを作成後、下記のコードを記述して下さい。

.gitignore
**/.terraform/*
.terraform.lock.hcl

# .tfstate files
*.tfstate
*.tfstate.backup
*.tfstate.*

# .tfstate files
*.tfvars
*.tfvars.*

crash.log

override.tf
override.tf.json
*_override.tf
*_override.tf.json

ここまではコードの構築は完成です。

操作方法(ターミナル操作)

Terraformの設定ファイルの初期化

terraform initのコマンドを叩き、Terraformの設定ファイルを含む作業ディレクトリを初期化します。

terraform init

構築した環境が正常に動くか確認

今回設定内容が正常に動作するか下記のコマンドを叩き、確認します。もし、エラーが出た場合は、エラー文を読んで修正して下さい。

terraform plan

構築した環境をAWSに反映

構築したコードを元にS3バケットの作成を行いたいので、下記のコマンドを叩きます。オプションに、-auto-approveを付与する事で、強制的に全ての確認をYesで進める事ができます。

terraform apply

# -auto-approveを付与
terraform apply -auto-approve

AWSに構築した環境を消去

今回AWSに構築したバケットが不要であれば、下記のコマンドを叩き消去します。オプションに、-auto-approveを付与する事で、強制的に全ての確認をYesで進める事ができます。

terraform destroy

# -auto-approveを付与
terraform destroy -auto-approve

gitにあげる際の注意事項

下記に記載するファイルはセキュリティーの観点から、git hubにあげないで下さい。

  • .terraform.lock.hcl
  • terraform.tfvars
  • terraform.tfstate
  • terraform.tfstate.backup
  • .gitignore

著者の作成したコード

自信が作成したコードをgit hubに上げましたので、確認事項があればご確認頂ければと思います。

感想

今回初めてTerraformを使用してAWSの設定の構築を行いました。一通りの構築方法や設定方法、動かし方について理解したので、今回学んだ事を活かして、構築したい環境をどんどん作成してきたいと思います。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?