modules/buckets_for_accelerator/storage_bucket.tf (82 lines of code) (raw):

#Bucket to store scripts resource "aws_s3_bucket" "storage" { bucket = var.storage_bucket_name != "" ? var.storage_bucket_name : "${var.repo_name}-${var.region_name}-storage-bucket" force_destroy = var.force_destroy } resource "aws_s3_bucket_policy" "storage_bucket" { bucket = aws_s3_bucket.storage.id policy = jsonencode({ Version = "2012-10-17" Id = "STORAGEBUCKETPOLICY" Statement = [ { Sid = "HTTPDeny" Effect = "Deny" Principal = "*" Action = "s3:*" Resource = [ aws_s3_bucket.storage.arn, "${aws_s3_bucket.storage.arn}/*" ] Condition = { Bool = { "aws:SecureTransport" = "false" } } } ] }) # other required fields here } resource "aws_s3_bucket_versioning" "storage_bucket" { bucket = aws_s3_bucket.storage.id versioning_configuration { status = var.versioning } } resource "aws_s3_bucket_public_access_block" "storage_bucket" { bucket = aws_s3_bucket.storage.id block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true } #====================== Bucket Server-Side Encryption =============== resource "aws_s3_bucket_server_side_encryption_configuration" "storage_bucket" { bucket = aws_s3_bucket.storage.id rule { apply_server_side_encryption_by_default { kms_master_key_id = aws_kms_key.artifact_encryption_key.arn sse_algorithm = "aws:kms" } } } # Script for creating deb package resource "aws_s3_object" "deb_script" { count = var.target_type == "instance" ? 1 : 0 bucket = aws_s3_bucket.storage.id key = "pack_to_deb.sh" source = "${path.module}/storage_bucket_files/pack_to_deb.sh" # etag = filemd5("${path.module}/storage_bucket_files/pack_to_deb.sh") kms_key_id = aws_kms_key.artifact_encryption_key.arn } # CloudFormation stack for DLT tests. resource "aws_s3_object" "dlt" { bucket = aws_s3_bucket.storage.id key = "dlt.yml" source = "${path.module}/storage_bucket_files/dlt.yml" # etag = filemd5("${path.module}/storage_bucket_files/dlt.yml") kms_key_id = aws_kms_key.artifact_encryption_key.arn } resource "aws_s3_bucket_policy" "allow_access_from_account" { bucket = aws_s3_bucket.storage.id policy = data.aws_iam_policy_document.allow_access_from_account.json } data "aws_iam_policy_document" "allow_access_from_account" { statement { principals { type = "AWS" identifiers = ["arn:aws:iam::${var.aws_account_id}:root"] } actions = [ "s3:*" ] resources = [ aws_s3_bucket.storage.arn, "${aws_s3_bucket.storage.arn}/*", ] } }