├── .gitignore ├── README.md ├── main.tf ├── output.tf └── variables.tf /.gitignore: -------------------------------------------------------------------------------- 1 | .terraform 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # terraform-cloud-custodian 2 | 3 | ## WARNING 4 | 5 | This module is in heavy development and is not yet ready for production use 6 | 7 | # Example 8 | 9 | ``` 10 | # the module itself 11 | module "custodian" { 12 | source = "/Users/Lee/github/terraform-cloud-custodian" 13 | s3_bucket_name = "lbriggs-cloud-custodian-output" 14 | name = "custodian" 15 | namespace = "lbriggs" 16 | stage = "dev" 17 | region = "us-west-2" 18 | } 19 | 20 | 21 | # additional policy attachments for your custodian functions 22 | resource "aws_iam_role_policy_attachment" "ec2" { 23 | role = "${module.custodian.role_arn}" 24 | policy_arn = "arn:aws:iam::aws:policy/AmazonEC2FullAccess" 25 | } 26 | ``` 27 | -------------------------------------------------------------------------------- /main.tf: -------------------------------------------------------------------------------- 1 | module "cloudtrail" { 2 | source = "git::https://github.com/cloudposse/terraform-aws-cloudtrail.git?ref=master" 3 | namespace = "${var.namespace}" 4 | stage = "${var.stage}" 5 | name = "${var.name}" 6 | enable_log_file_validation = "true" 7 | include_global_service_events = "true" 8 | is_multi_region_trail = "false" 9 | enable_logging = "true" 10 | s3_bucket_name = "${module.cloudtrail_s3_bucket.bucket_id}" 11 | 12 | event_selector = [ 13 | { 14 | read_write_type = "All" 15 | include_management_events = true 16 | 17 | data_resource = [{ 18 | type = "AWS::Lambda::Function" 19 | values = ["arn:aws:lambda"] 20 | }] 21 | }, 22 | ] 23 | } 24 | 25 | module "cloudtrail_s3_bucket" { 26 | source = "git::https://github.com/cloudposse/terraform-aws-cloudtrail-s3-bucket.git?ref=master" 27 | namespace = "${var.namespace}" 28 | stage = "${var.stage}" 29 | name = "${var.name}-cloudtrail-logs" 30 | region = "${var.region}" 31 | } 32 | 33 | resource "aws_s3_bucket" "custodian_output" { 34 | bucket = "${var.namespace}-${var.stage}-${var.region}-${var.name}-custodian-output" 35 | 36 | tags { 37 | Name = "${var.name}-custodian-output" 38 | Namespace = "${var.namespace}" 39 | Stage = "${var.stage}" 40 | } 41 | 42 | versioning { 43 | enabled = true 44 | } 45 | 46 | force_destroy = true 47 | } 48 | 49 | module "cloudtrail_sqs_queue" { 50 | source = "git::https://github.com/terraform-aws-modules/terraform-aws-sqs.git?ref=master" 51 | name = "${var.namespace}-${var.stage}-${var.region}-${var.name}-sqs" 52 | 53 | tags = { 54 | Namespace = "${var.namespace}" 55 | Stage = "${var.stage}" 56 | } 57 | } 58 | 59 | resource "aws_iam_role" "role" { 60 | name = "${var.name}-role" 61 | path = "/${var.namespace}/${var.stage}/" 62 | 63 | assume_role_policy = <