diff --git a/athena.tf b/athena.tf new file mode 100644 index 0000000..3ac53a1 --- /dev/null +++ b/athena.tf @@ -0,0 +1,4 @@ +resource "aws_athena_database" "transponder-metrics" { + name = "transponder_metrics" + bucket = aws_s3_bucket.transponder-data.id +} diff --git a/load.tf b/load.tf new file mode 100644 index 0000000..fefc36d --- /dev/null +++ b/load.tf @@ -0,0 +1,33 @@ +data "aws_iam_policy_document" "lambda-load-role" { + statement { + effect = "Allow" + principals { + type = "Service" + identifiers = ["lambda.amazonaws.com"] + } + actions = ["sts:AssumeRole"] + } +} + +resource "aws_iam_role" "lambda-load-role" { + name = "lambda-load-role" + assume_role_policy = data.aws_iam_policy_document.lambda-load-role.json +} + +data "archive_file" "lambda-load-role" { + type = "zip" + source_file = "src/load.py" + output_path = "src/load.zip" +} + +resource "aws_lambda_function" "load" { + function_name = "transponder-tracker-load" + runtime = "python3.11" + + role = aws_iam_role.lambda-load-role.arn + + handler = "load" + filename = "src/load.zip" + source_code_hash = data.archive_file.lambda-load-role.output_base64sha256 +} + diff --git a/metrics.tf b/metrics.tf new file mode 100644 index 0000000..c9a8e5c --- /dev/null +++ b/metrics.tf @@ -0,0 +1,33 @@ +data "aws_iam_policy_document" "lambda-metrics-role" { + statement { + effect = "Allow" + principals { + type = "Service" + identifiers = ["lambda.amazonaws.com"] + } + actions = ["sts:AssumeRole"] + } +} + +resource "aws_iam_role" "lambda-metrics-role" { + name = "lambda-metrics-role" + assume_role_policy = data.aws_iam_policy_document.lambda-metrics-role.json +} + +data "archive_file" "lambda-metrics-role" { + type = "zip" + source_file = "src/metrics.py" + output_path = "src/metrics.zip" +} + +resource "aws_lambda_function" "metrics" { + function_name = "transponder-tracker-metrics" + runtime = "python3.11" + + role = aws_iam_role.lambda-metrics-role.arn + + handler = "metrics" + filename = "src/metrics.zip" + source_code_hash = data.archive_file.lambda-metrics-role.output_base64sha256 +} + diff --git a/providers.tf b/providers.tf index e4fcecb..6385ef3 100644 --- a/providers.tf +++ b/providers.tf @@ -4,6 +4,10 @@ terraform { source = "hashicorp/aws" version = "~> 5.99" } + archive = { + source = "hashicorp/archive" + version = "~> 2.7" + } } } diff --git a/s3.tf b/s3.tf index 875b914..32f96cb 100644 --- a/s3.tf +++ b/s3.tf @@ -2,4 +2,10 @@ resource "aws_s3_bucket" "transponder-data" { bucket_prefix = "transponder-data" } +resource "aws_s3_bucket_versioning" "transponder-data-versioning" { + bucket = aws_s3_bucket.transponder-data.id + versioning_configuration { + status = "Enabled" + } +}