82 lines
1.9 KiB
HCL
82 lines
1.9 KiB
HCL
module random-suffix {
|
|
source = "../../util/random"
|
|
}
|
|
|
|
resource "aws_s3_bucket" "s3bucket" {
|
|
bucket = var.add-random-suffix ? "${var.bucket-name}-${module.random-suffix.number}" : var.bucket-name
|
|
tags = var.default-tags
|
|
}
|
|
|
|
resource "aws_s3_bucket_policy" "bucket-policy" {
|
|
bucket = aws_s3_bucket.s3bucket.bucket
|
|
policy = var.bucket-policy-json
|
|
|
|
}
|
|
resource "aws_s3_bucket_lifecycle_configuration" "bucket-lifecycle-config" {
|
|
count = var.bucket-enable-lifecycle ? 1 : 0
|
|
|
|
bucket = aws_s3_bucket.s3bucket.bucket
|
|
|
|
rule {
|
|
id = "default"
|
|
status = "Enabled"
|
|
|
|
dynamic "noncurrent_version_expiration" {
|
|
for_each = var.enable-bucket-versioning ? [1] : []
|
|
content {
|
|
noncurrent_days = 90
|
|
}
|
|
}
|
|
|
|
dynamic "expiration" {
|
|
for_each = var.bucket-retain-days > 0 ? [1] : []
|
|
content {
|
|
days = var.bucket-retain-days
|
|
}
|
|
}
|
|
|
|
transition {
|
|
days = var.transition-ia-days
|
|
storage_class = "STANDARD_IA"
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "aws_s3_bucket_acl" "bucket-acl" {
|
|
bucket = aws_s3_bucket.s3bucket.bucket
|
|
acl = var.bucket-acl
|
|
}
|
|
|
|
resource "aws_s3_bucket_versioning" "bucket-versioning" {
|
|
count = var.enable-bucket-versioning ? 1 : 0
|
|
bucket = aws_s3_bucket.s3bucket.id
|
|
versioning_configuration {
|
|
status = "Enabled"
|
|
}
|
|
}
|
|
|
|
resource "aws_s3_bucket_server_side_encryption_configuration" "bucket-encryption" {
|
|
bucket = aws_s3_bucket.s3bucket.bucket
|
|
rule {
|
|
apply_server_side_encryption_by_default {
|
|
sse_algorithm = "AES256"
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "aws_s3_bucket_public_access_block" "s3-public-access-settings" {
|
|
bucket = aws_s3_bucket.s3bucket.id
|
|
|
|
block_public_acls = true
|
|
block_public_policy = true
|
|
ignore_public_acls = true
|
|
restrict_public_buckets = true
|
|
}
|
|
|
|
resource "aws_s3_bucket_ownership_controls" "ctbucket-ownership-setting" {
|
|
bucket = aws_s3_bucket.s3bucket.id
|
|
|
|
rule {
|
|
object_ownership = "BucketOwnerPreferred"
|
|
}
|
|
} |