S3バケット設定をオブジェクト変数として定義する

バージョニング、暗号化、ライフサイクルルール、アクセスログを含むS3バケット設定用のTerraformオブジェクト変数を作成します。

Resource Configuration

詳細な説明

S3バケット設定オブジェクト

S3設定を複数の変数に散在させる代わりに、単一のオブジェクト変数にまとめます。これによりモジュールインターフェースがクリーンになり、関連する設定がまとまります。

変数定義

variable "s3_config" {
  type = object({
    bucket_name       = string
    versioning        = bool
    encryption        = bool
    lifecycle_days    = number
    access_logging    = bool
    force_destroy     = bool
  })
  description = "S3 bucket configuration settings"
  default = {
    bucket_name       = "my-app-data"
    versioning        = true
    encryption        = true
    lifecycle_days    = 90
    access_logging    = false
    force_destroy     = false
  }
}

環境別のオーバーライド

# dev.tfvars
s3_config = {
  bucket_name    = "dev-data"
  versioning     = false
  encryption     = true
  lifecycle_days = 30
  access_logging = false
  force_destroy  = true
}

# prod.tfvars
s3_config = {
  bucket_name    = "prod-data"
  versioning     = true
  encryption     = true
  lifecycle_days = 365
  access_logging = true
  force_destroy  = false
}

オブジェクト vs 個別変数

アプローチ メリット デメリット
単一オブジェクト グループ化、クリーンなインターフェース デフォルトは全部かゼロ
個別変数 きめ細かいデフォルト 管理する変数が増加

オブジェクトアプローチは設定が論理的に一貫していて、通常一緒に設定される場合に最適です。

ユースケース

バージョニング、暗号化、ライフサイクル、ログの設定が開発(最小限)と本番(フルコンプライアンス)環境で異なるS3バケットモジュール。

試してみる — Terraform Variable Generator

フルツールを開く