この記事では、Terraformを使用してAWSでS3バケットを作成する方法を紹介します。先に進む前に、S3バケットに精通していることを前提としています。そうでない場合は、ここをクリックして、AWSコンソールからS3バケットを作成する手順を確認できます。
- Terraformの基本的な理解。
- システムにインストールされているTerraform。
- AWSアカウント(アカウントがない場合は作成します)。
- AWSIAMユーザーの「access_key」と「secret_key」。 (AWSで「access_key」と「secret_key」を使用してIAMユーザーを作成する方法については、ここをクリックしてください)
- S3バケットのTerraform構成ファイルを作成します。
- Terraform構成ファイルを使用してS3バケットを作成します。
- Terraformを使用して作成したS3バケットを削除します。
S3バケットの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)))}" }
Here,
-
bucket:
バケットの名前。省略した場合、Terraformはランダムで一意の名前を割り当てます。 -
force_destroy:
バケットをエラーなしで破棄できるように、すべてのオブジェクトをバケットから削除する必要があることを示すブール値。 region
:このバケットが存在する必要があるAWSリージョン。tags:
バケットに割り当てるタグのマップ。
指定した地域以外の地域でバケットを作成する場合は、「地域」の値を変更してください。
変数の宣言と定義を含む「variables.tf」を作成します。
vim variables.tf
variable "access_key" { description = "Access key to AWS console" } variable "secret_key" { description = "Secret key to AWS console" } variable "region" { description = "Region of AWS VPC" } variable "bucket_name" { description = "(Required) Creates a unique bucket name" type = "string" default = "test-bucket-rahul-delete" } variable "force_destroy" { description = "(Optional) A boolean that indicates all objects should be deleted from the bucket so that the bucket can be destroyed without error" type = "string" default = true } variable "tags" { description = "(Optional) A mapping of tags to assign to the bucket" type = "map" default = {"env": "test"} }
'variables.tf'を作成したら、変数に割り当てられた値を変更することを忘れないでください。強調表示されている値は私の環境に固有のものであるため、変更する必要があります。残りの変数はそのままにしておくことができます。
上記のファイルで定義されたaccess_key変数とsecret_key変数の定義を「region」変数とともに含む「terraform.tfvars」を作成します。
次のキーは、IAMユーザーのキーで変更する必要があります。
vim terraform.tfvars
region = "eu-west-3" access_key = "AKIAQ6GAIA5XFLXF6HOV" secret_key = "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"
これで、3つのファイル、つまり、variables.tf、terraform.tfvars、およびmain.tfが必要になります
Terraform構成ファイルを使用してS3バケットを作成します
次のコマンドを実行する前に、有効なaccess_keyとsecret_keyが構成されていることを確認してください。
使用する最初のコマンドは「terraforminit」です。このコマンドは、構成内で使用されるプロバイダーのプラグインをダウンロードしてインストールします。私たちの場合はAWSです。
terraform init
使用する2番目のコマンドは「テラフォームプラン」です。このコマンドは、インフラストラクチャで行われる変更を確認するために使用されます。
terraform plan
'terraform apply'コマンドは、main.tfファイルに記載されているAWSにリソースを作成します。リソースを作成するための入力を入力するように求められます。
terraform apply
上記のコマンドを実行すると、正常に完了すると、1つの新しいリソースが追加され、0が破棄されたことがわかります。
AWS S3コンソールに移動して、S3バケットが作成されているかどうかを確認できます。
Terraformを使用してS3バケットを削除する
main.tfファイルに記載されている構成を使用して作成したリソースが不要になった場合は、「terraformdestroy」コマンドを使用してこれらのリソースをすべて削除できます。ここで、S3バケットは、次のコマンドを実行すると削除されます。
terraform destroy
上のスクリーンショットでは、リソースが破壊されていることがわかります。
結論
この記事では、Terraformを使用してS3バケットを作成する手順を説明しました。また、作成したバケットを1つのコマンドで削除する方法も確認しました。