83 lines
1.9 KiB
HCL
83 lines
1.9 KiB
HCL
# Thanks to https://blog.gruntwork.io/how-to-manage-terraform-state-28f5697e68fa
|
|
|
|
resource "aws_s3_bucket" "terraform_state" {
|
|
bucket = "omnicognate-terraform-state"
|
|
|
|
# Prevent accidental deletion of this S3 bucket
|
|
lifecycle {
|
|
prevent_destroy = true
|
|
}
|
|
tags = merge(
|
|
{ Name = "${var.resource_name_prefix}-aws_s3_bucket" },
|
|
var.common_tags,
|
|
)
|
|
}
|
|
|
|
resource "aws_s3_bucket_versioning" "enabled" {
|
|
bucket = aws_s3_bucket.terraform_state.bucket
|
|
versioning_configuration {
|
|
status = "Enabled"
|
|
mfa_delete = "Disabled"
|
|
}
|
|
|
|
}
|
|
|
|
resource "aws_s3_bucket_server_side_encryption_configuration" "default" {
|
|
bucket = aws_s3_bucket.terraform_state.bucket
|
|
|
|
rule {
|
|
apply_server_side_encryption_by_default {
|
|
sse_algorithm = "AES256"
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
resource "aws_s3_bucket_public_access_block" "public_access" {
|
|
bucket = aws_s3_bucket.terraform_state.bucket
|
|
block_public_acls = true
|
|
block_public_policy = true
|
|
ignore_public_acls = true
|
|
restrict_public_buckets = true
|
|
|
|
}
|
|
|
|
# DynamoBD CMK
|
|
resource "aws_kms_key" "dynamodb" {
|
|
description = "DynamoDB Table Server side encryption"
|
|
enable_key_rotation = true
|
|
key_usage = "ENCRYPT_DECRYPT"
|
|
|
|
}
|
|
|
|
resource "aws_kms_alias" "dynamodb" {
|
|
name = format("alias/%s-dynamodb-CMK", var.resource_name_prefix,)
|
|
target_key_id = aws_kms_key.dynamodb.key_id
|
|
}
|
|
|
|
|
|
resource "aws_dynamodb_table" "terraform_locks" {
|
|
name = "omnicognate-terraform-locks"
|
|
billing_mode = "PAY_PER_REQUEST"
|
|
hash_key = "LockID"
|
|
depends_on = [ aws_s3_bucket_versioning.enabled ]
|
|
|
|
attribute {
|
|
name = "LockID"
|
|
type = "S"
|
|
}
|
|
server_side_encryption {
|
|
enabled = true
|
|
kms_key_arn = aws_kms_key.dynamodb.arn
|
|
}
|
|
point_in_time_recovery {
|
|
enabled = true
|
|
}
|
|
lifecycle {
|
|
prevent_destroy = true
|
|
}
|
|
tags = merge(
|
|
{ Name = "${var.resource_name_prefix}-aws_dynamodb_table" },
|
|
var.common_tags,
|
|
)
|
|
} |