AWS, Terraform · 1 min read · Feb 08, 2026

Terraformを使用してAWSにS3バケットを作成する

この記事では、Terraformを使用してAWSにS3バケットを作成する方法を示します。進む前に、S3バケットに慣れていることを前提とします。そうでない場合は、こちらをクリックしてAWSコンソールからS3バケットを作成する手順を確認してください。

前提条件

  1. Terraformの基本的な理解。
  2. システムにインストールされたTerraform。
  3. AWSアカウント(持っていない場合は作成してください)。
  4. AWS IAMユーザーの’access_key’と’secret_key’。(こちらをクリックしてAWSで’access_key’と’secret_key’を持つIAMユーザーを作成する方法を学びます。)

何をするか

  1. S3バケットのためのTerraform構成ファイルを書く。
  2. Terraform構成ファイルを使用してS3バケットを作成する。
  3. Terraformを使用して作成したS3バケットを削除する。

S3バケットのためのTerraform構成ファイルを書く

Terraform構成ファイルを作成できる専用のディレクトリを作成します。

以下のコマンドを使用してディレクトリを作成し、現在の作業ディレクトリを変更します。

*mkdir terraform  
**cd terraform/*

私はファイルを書くために「vim」をエディタとして使用していますが、好みのエディタを使用して以下の構成をコピー&ペーストしてvariables.tf、terraform.tfvars、main.tfを作成できます。

AWSにS3バケットを作成する責任を持つ’main.tf’を作成します。このmain.tfは、variables.tfとterraform.tfvarsから変数の値を読み取ります。

*vim main.tf*
provider "aws" {
      region     = "${var.region}"
      access_key = "${var.access_key}"
      secret_key = "${var.secret_key}"
}

resource "aws_s3_bucket" "this" {
  bucket                               = "${var.bucket_name}"
  force_destroy                        = "${var.force_destroy}"
  region                               = "${var.region}"
  tags                                 = "${merge(var.tags, map("Name", format("%s", var.bucket_name)))}"
}

ここで、

  • bucket: バケットの名前。省略すると、Terraformはランダムでユニークな名前を割り当てます。
  • force_destroy: バケットからすべてのオブジェクトを削除する必要があることを示すブール値で、エラーなしでバケットを削除できます。
  • region: このバケットが存在するAWSリージョン。
  • tags: バケットに割り当てるタグのマップ。

指定した以外のリージョンにバケットを作成したい場合は、「region」の値を変更してください。

変数の宣言と定義を含む‘variables.tf’を作成します。

*vim variables.tf*
variable "access_key" {
     description = "AWSコンソールへのアクセスキー"
}
variable "secret_key" {
     description = "AWSコンソールへのシークレットキー"
}
variable "region" {
     description = "AWS VPCのリージョン"
}

variable "bucket_name" {
  description = "(必須) ユニークなバケット名を作成"
  type        = "string"
  default     = "test-bucket-rahul-delete"
}

variable "force_destroy" {
  description = "(オプション) バケットからすべてのオブジェクトを削除する必要があることを示すブール値"
  type        = "string"
  default     = true
}

variable "tags" {
  description = "(オプション) バケットに割り当てるタグのマッピング"
  type        = "map"
  default     = {"env": "test"}
}

‘variables.tf’を作成したら、変数に割り当てられた値を変更することを忘れないでください。私の環境に特有のため、強調表示された値を変更する必要があります。他の変数はそのままにしておくことができます。

上記のファイルで定義されたaccess_keyとsecret_key変数の定義を含む‘terraform.tfvars’を作成します。

以下のキーは、IAMユーザーのキーに変更する必要があります。

*vim terraform.tfvars*
region = "eu-west-3"
access_key = "AKIAQ6GAIA5XFLXF6HOV"
secret_key = "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"

これで、variables.tf、terraform.tfvars、main.tfの3つのファイルができているはずです。

Terraform構成ファイルを使用してS3バケットを作成する

以下のコマンドを実行する前に、有効なaccess_keyとsecret_keyを設定していることを確認してください。

最初に使用するコマンドは’terraform init’です。このコマンドは、構成内で使用されるプロバイダーのプラグインをダウンロードしてインストールします。私たちの場合はAWSです。

* **terraform init*

Terraform init

次に使用するコマンドは’terraform plan’です。このコマンドは、インフラストラクチャで発生する変更を確認するために使用されます。

* terraform plan*

 terraform plan

‘terraform apply’コマンドは、main.tfファイルに記載されたAWS上のリソースを作成します。リソースを作成するために入力を提供するように求められます。

terraform apply

terraform apply

上記のコマンドを実行すると、成功裏に完了した場合、1つの新しいリソースが追加され、0が破棄されたことが確認できます。

AWS S3コンソールに移動して、S3バケットが作成されたかどうかを確認できます。

AWS S3

Terraformを使用してS3バケットを削除する


main.tfファイルに記載された構成を使用して作成したリソースが不要になった場合は、「terraform destroy」コマンドを使用してそれらのリソースをすべて削除できます。ここでは、次のコマンドを実行するとS3バケットが削除されます。

terraform destroy

上記のスクリーンショットでは、リソースが破棄されたことが確認できます。

結論


この記事では、Terraformを使用してS3バケットを作成する手順を見ました。また、作成したバケットを1つのコマンドで削除できる方法も見ました。**

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。