Skip to content
This repository has been archived by the owner on Feb 1, 2023. It is now read-only.

Upgrade to tf12 #1

Merged
merged 1 commit into from Jan 14, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .circleci/config.yml
Expand Up @@ -2,7 +2,7 @@ version: 2
jobs:
validate:
docker:
- image: trussworks/circleci-docker-primary:93fe471597189fed29f1ab2f517fc4c3370f2a77
- image: trussworks/circleci-docker-primary:tf12-7552e0866ce831fb2e2459ddc1faa1017267c402
steps:
- checkout
- restore_cache:
Expand Down
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
@@ -1,6 +1,6 @@
repos:
- repo: git://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0
rev: v2.4.0
hooks:
- id: check-json
- id: check-merge-conflict
Expand All @@ -12,12 +12,12 @@ repos:
- id: trailing-whitespace

- repo: git://github.com/igorshubovych/markdownlint-cli
rev: v0.19.0
rev: v0.21.0
hooks:
- id: markdownlint

- repo: git://github.com/antonbabenko/pre-commit-terraform
rev: v1.19.0
rev: v1.22.0
hooks:
- id: terraform_docs
- id: terraform_fmt
1 change: 0 additions & 1 deletion .terraform-version

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
@@ -1,4 +1,3 @@
<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
Creates an AWS Lambda function to send Slack notification for AWS health events (e.g.,outages).
using [truss-aws-tools](https://github.com/trussworks/truss-aws-tools).

Expand All @@ -23,6 +22,7 @@ module "health-notifications" {
}
```

<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
## Inputs

| Name | Description | Type | Default | Required |
Expand Down
42 changes: 23 additions & 19 deletions main.tf
Expand Up @@ -29,8 +29,11 @@ locals {
name = "aws-health-notifier"
}

data "aws_region" "current" {}
data "aws_caller_identity" "current" {}
data "aws_region" "current" {
}

data "aws_caller_identity" "current" {
}

#
# IAM
Expand Down Expand Up @@ -79,14 +82,14 @@ data "aws_iam_policy_document" "main" {

resource "aws_iam_role" "main" {
name = "lambda-${local.name}-${var.environment}"
assume_role_policy = "${data.aws_iam_policy_document.assume_role.json}"
assume_role_policy = data.aws_iam_policy_document.assume_role.json
}

resource "aws_iam_role_policy" "main" {
name = "lambda-${local.name}-${var.environment}"
role = "${aws_iam_role.main.id}"
role = aws_iam_role.main.id

policy = "${data.aws_iam_policy_document.main.json}"
policy = data.aws_iam_policy_document.main.json
}

#
Expand All @@ -96,12 +99,12 @@ resource "aws_iam_role_policy" "main" {
resource "aws_cloudwatch_event_rule" "main" {
name = "${local.name}-${var.environment}"
description = "AWS Health Notifications"
event_pattern = "${file("${path.module}/event-pattern.json")}"
event_pattern = file("${path.module}/event-pattern.json")
}

resource "aws_cloudwatch_event_target" "main" {
rule = "${aws_cloudwatch_event_rule.main.name}"
arn = "${aws_lambda_function.main.arn}"
rule = aws_cloudwatch_event_rule.main.name
arn = aws_lambda_function.main.arn
}

#
Expand All @@ -111,11 +114,11 @@ resource "aws_cloudwatch_event_target" "main" {
resource "aws_cloudwatch_log_group" "main" {
# This name must match the lambda function name and should not be changed
name = "/aws/lambda/${local.name}-${var.environment}"
retention_in_days = "${var.cloudwatch_logs_retention_days}"
retention_in_days = var.cloudwatch_logs_retention_days

tags = {
Name = "${local.name}-${var.environment}"
Environment = "${var.environment}"
Environment = var.environment
}
}

Expand All @@ -124,38 +127,39 @@ resource "aws_cloudwatch_log_group" "main" {
#

resource "aws_lambda_function" "main" {
depends_on = ["aws_cloudwatch_log_group.main"]
depends_on = [aws_cloudwatch_log_group.main]

s3_bucket = "${var.s3_bucket}"
s3_bucket = var.s3_bucket
s3_key = "${local.pkg}/${var.version_to_deploy}/${local.pkg}.zip"

function_name = "${local.name}-${var.environment}"
role = "${aws_iam_role.main.arn}"
handler = "${local.name}"
role = aws_iam_role.main.arn
handler = local.name
runtime = "go1.x"
memory_size = "128"
timeout = "60"

environment {
variables = {
SLACK_CHANNEL = "${var.slack_channel}"
SLACK_CHANNEL = var.slack_channel
SLACK_EMOJI = ":thisisfine:"
SSM_SLACK_WEBHOOK_URL = "${var.ssm_slack_webhook_url}"
SSM_SLACK_WEBHOOK_URL = var.ssm_slack_webhook_url
}
}

tags = {
Name = "${local.name}-${var.environment}"
Environment = "${var.environment}"
Environment = var.environment
}
}

resource "aws_lambda_permission" "main" {
statement_id = "${local.name}-${var.environment}"

action = "lambda:InvokeFunction"
function_name = "${aws_lambda_function.main.function_name}"
function_name = aws_lambda_function.main.function_name

principal = "events.amazonaws.com"
source_arn = "${aws_cloudwatch_event_rule.main.arn}"
source_arn = aws_cloudwatch_event_rule.main.arn
}

11 changes: 6 additions & 5 deletions variables.tf
@@ -1,7 +1,7 @@
variable "cloudwatch_logs_retention_days" {
default = 90
description = "Number of days to keep logs in AWS CloudWatch."
type = "string"
type = string
}

variable "environment" {
Expand All @@ -10,20 +10,21 @@ variable "environment" {

variable "s3_bucket" {
description = "The name of the S3 bucket used to store the Lambda builds."
type = "string"
type = string
}

variable "version_to_deploy" {
description = "The version the Lambda function to deploy."
type = "string"
type = string
}

variable "ssm_slack_webhook_url" {
description = "Name of the Slack webhook url parameter in Parameter Store."
type = "string"
type = string
}

variable "slack_channel" {
description = "Slack channel to send alert to"
type = "string"
type = string
}

4 changes: 4 additions & 0 deletions versions.tf
@@ -0,0 +1,4 @@

terraform {
required_version = ">= 0.12"
}