locals { bucket_name = "REPLACE_ME_WITH_S3_BUCKET" event_bus_name = "default" container_image = "REPLACE_ME_WITH_ECR_IMAGE_ARN" ecs_subnet_id = "REPLACE_ME_WITH_SUBNET_ID" region = "REPLACE_ME_WITH_AWS_REGION" } provider "aws" { region = "${local.region}" } ### S3 Resource Configuration ### resource "aws_s3_bucket" "bucket" { bucket = local.bucket_name } resource "aws_s3_bucket_notification" "bucket_notification" { bucket = aws_s3_bucket.bucket.id eventbridge = true } resource "aws_s3_bucket_public_access_block" "bucket_bpa" { bucket = aws_s3_bucket.bucket.id block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true } ### Choreography Reporting Rule ### resource "aws_cloudwatch_event_rule" "serverlessland-s3-notification-rule" { name = "serverlessland-s3-notification-rule" description = "Capture s3 events" event_bus_name = local.event_bus_name event_pattern = < }, { "name" : "OBJECT_KEY", "value" : }, { "name" : "SOURCE_IP", "value" : } ] } ] } EOF } } ### ECS Cluster ### resource "aws_ecs_cluster" "serverlessland-ecs-test-cluster" { name = "serverlessland-ecs-test-cluster" setting { name = "containerInsights" value = "enabled" } } ### ECS Task Definition ### resource "aws_ecs_task_definition" "serverlessland-ecs-task-definition" { family = "serverlessland-ecs-task-definition" requires_compatibilities = ["FARGATE"] network_mode = "awsvpc" cpu = 1024 memory = 2048 task_role_arn = aws_iam_role.serverlessland-ecs-task-role.arn execution_role_arn = aws_iam_role.serverlessland-ecs-task-execution-role.arn container_definitions = <