diff --git a/storage/s3/README.md b/storage/s3/README.md new file mode 100644 index 0000000..dc250b4 --- /dev/null +++ b/storage/s3/README.md @@ -0,0 +1,24 @@ +# Annotation +The S3 module is used to create s3 bucket on AWS. + +## Used modules + +- [iam-assumable-role](https://github.com/terraform-aws-modules/terraform-aws-iam/tree/v4.3.0/modules/iam-assumable-role) + + +## Feature + +- IAM assumable role for accessing S3 bucket by other resources +- AWS cloudwatch group that collects logs from AWS Cloudtrail + +## Example usage +``` +module "s3" { + depends_on = [ module.kubernetes] + source = "./sak-incubator/storage/s3" + s3_bucket_name = "${module.kubernetes.cluster_name}-main" + cluster_name = module.kubernetes.cluster_name + trusted_role_arns = [ module.kubernetes.this.cluster_iam_role_arn ] + s3_cloudwatch_logging_enabled = true +} +``` diff --git a/storage/s3/main.tf b/storage/s3/main.tf index 1bdde26..ce4f9fc 100644 --- a/storage/s3/main.tf +++ b/storage/s3/main.tf @@ -1,4 +1,91 @@ -resource "aws_s3_bucket" "kubeflow" { +resource "aws_cloudwatch_log_group" "s3_cloudtrail_logs" { + count = var.s3_cloudwatch_logging_enabled ? 1 : 0 + name = "s3-cloudtrail-logs-${var.s3_bucket_name}" +} + +data "aws_iam_policy_document" "cloudtrail-assume-role-policy" { + statement { + actions = ["sts:AssumeRole"] + + principals { + type = "Service" + identifiers = ["cloudtrail.amazonaws.com"] + } + } +} + + + +resource "aws_s3_bucket" "s3_cloudtrail_logs" { + + count = var.s3_cloudwatch_logging_enabled ? 1 : 0 + bucket = "s3-cloudtrail-logs-${var.s3_bucket_name}" + tags = var.tags + + policy = <