Jocelyn Badgley (Twipped) 3f6077eb18 Terraform updates
Attempting to do some log parsing into cloudwatch logs
2021-03-01 14:01:29 -08:00

62 lines
1.7 KiB
HCL

# -----------------------------------------------------------------------------------------------------------
# Grant the log parsing lambda access to the logs bucket
resource "aws_lambda_permission" "allow_bucket" {
statement_id = "AllowExecutionFromS3Bucket"
action = "lambda:InvokeFunction"
function_name = aws_lambda_function.ipixel_parser.arn
principal = "s3.amazonaws.com"
source_arn = aws_s3_bucket.ipixel_logs.arn
}
# -----------------------------------------------------------------------------------------------------------
# Log Parsing Lambda
resource "aws_s3_bucket_notification" "ipixel_logs" {
bucket = aws_s3_bucket.ipixel_logs.bucket
lambda_function {
lambda_function_arn = aws_lambda_function.ipixel_parser.arn
events = ["s3:ObjectCreated:*"]
}
depends_on = [aws_lambda_permission.s3_bucket_invoke_function]
}
data "archive_file" "ipixel_parser" {
type = "zip"
source_dir = "${path.module}/lambda/src"
output_path = ".terraform/tmp/lambda/ipixel_parser.zip"
}
resource "aws_lambda_function" "ipixel_parser" {
function_name = "ipixel-parser-${var.site}"
runtime = "nodejs12.x"
handler = "index.handler"
timeout = 5
reserved_concurrent_executions = 3
environment {
variables = {
CLOUDWATCH_LOGS_GROUP_ARN = aws_cloudwatch_log_group.ipixel_results.arn
}
}
role = aws_iam_role.ipixel_parser.arn
filename = data.archive_file.ipixel_parser.output_path
source_code_hash = data.archive_file.ipixel_parser.output_base64sha256
tags = {
Site = var.site,
Role = "ipixel"
}
depends_on = [aws_cloudwatch_log_group.ipixel_parser_logs]
}