Skip to content

Commit

Permalink
add cloudwatch stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
badra001 committed Jan 26, 2022
1 parent d77d6b5 commit da0b152
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 2 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,15 @@ No modules.

| Name | Type |
|------|------|
| [aws_cloudwatch_event_rule.ec2_rule](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_rule) | resource |
| [aws_cloudwatch_event_target.ec2_target](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_target) | resource |
| [aws_cloudwatch_log_group.log](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource |
| [aws_dynamodb_table.table](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/dynamodb_table) | resource |
| [aws_iam_role.role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
| [aws_iam_role_policy_attachment.role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |
| [aws_lambda_alias.lambda](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_alias) | resource |
| [aws_lambda_function.lambda](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function) | resource |
| [aws_lambda_permission.allow_cloudwatch](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |
| [aws_arn.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/arn) | data source |
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
| [aws_iam_policy.lambda_policies](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy) | data source |
Expand Down
47 changes: 47 additions & 0 deletions cloudwatch.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
locals {
cloudwatch_name = format("/aws/lambda/%v", local.lambda_name)
cloudwatch_event_pattern = {
"source" = ["aws.ec2"]
"detail-type" = ["EC2 Instance State-change Notification"]
"detail" = {
"state" = ["running", "shutting-down", "stopped"]
}
}
}

resource "aws_cloudwatch_log_group" "log" {
count = var.create ? 1 : 0
name = local.cloudwatch_name
# kms_key_id = var.kms_key_arn
retention_in_days = lookup(local._defaults["cloudwatch"], "retention_in_days", 7)

tags = merge(
local.base_tags,
var.tags,
map("Name", local.name),
)
}

# aws events put-targets --rule ec2_lambda_ddns_rule --targets Id=id123456789012,Arn=<enter-your-lambda-function-arn-here>

resource "aws_cloudwatch_event_rule" "ec2_rule" {
name = local.name
description = "Capture EC2 Events to hande dynamic Route53 registration"
event_pattern = json(local.cloudwatch_event_pattern)
}

resource "aws_cloudwatch_event_target" "ec2_target" {
target_id = local.name
arn = aws_lambda_function.lambda.arn
rule = aws_cloudwatch_event_rule.ec2_rule.name
}

resource "aws_lambda_permission" "allow_cloudwatch" {
statement_id = local.name
# statement_id = 45
action = "lambda:InvokeFunction"
function_name = aws_lambda_function.lambda.function_name
principal = "events.amazonaws.com"
source_arn = aws_cloudwatch_event_rule.ec2_rule.arn
qualifier = aws_lambda_alias.lambda.name
}
3 changes: 3 additions & 0 deletions defaults.tf
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,8 @@ locals {
"max_session_duration" = 3600
"lambda_handler" = "ddns-lambda.lambda_handler"
"lambda_file" = "ddns-lambda"
"lambda_timeout" = 300
"lambda_description" = "Take EC2 Events and register/deregister from Route53"
"cloudwatch" = 180
}
}
11 changes: 10 additions & 1 deletion lambda.tf
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@ locals {
resource "aws_lambda_function" "lambda" {
count = var.create ? 1 : 0
function_name = local.lambda_name
description = local._defaults["lambda_description"]
handler = local._defaults["lambda_handler"]
memory_size = 128
reserved_concurrent_executions = -1
role = var.create ? aws_iam_role.role[0].arn : null
runtime = "python3.9"
source_code_hash = filebase64sha256(local.lambda_file)
filename = local.lambda_file
timeout = 30
timeout = local._defaults["lambda_timeout"]
# version = "$LATEST"

environment {
Expand All @@ -32,3 +33,11 @@ resource "aws_lambda_function" "lambda" {
map("Name", local.lambda_name)
)
}

resource "aws_lambda_alias" "lambda" {
count = var.create ? 1 : 0
name = local.lambda_name
description = local._defaults["lambda_description"]
function_name = var.create ? aws_lambda_function.lambda[0].function_name : null
function_version = "$LATEST"
}
2 changes: 1 addition & 1 deletion version.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
locals {
_module_version = "0.0.6"
_module_version = "0.0.8"
}

0 comments on commit da0b152

Please sign in to comment.