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バケットモジュール。