lots of nice tweaks

This commit is contained in:
Bryce Covert
2020-09-26 09:28:48 -07:00
parent 99d71ab8e5
commit 2c8213b18a
6 changed files with 296 additions and 24 deletions

View File

@@ -1,7 +1,7 @@
variable "task_role_arn" {} variable "task_role_arn" {}
variable "execution_role_arn" {} variable "execution_role_arn" {}
variable "ecs_cluster" {} variable "ecs_cluster" {}
variable "service_registry" {} variable "local_namespace" {}
variable "http_listener_sg" { variable "http_listener_sg" {
default = "sg-0024906e0e1f78048" default = "sg-0024906e0e1f78048"
@@ -49,7 +49,7 @@ resource "aws_ecs_service" "integreat_app" {
service_registries { service_registries {
container_port = 0 container_port = 0
port = 0 port = 0
registry_arn = "${var.service_registry}" registry_arn = aws_service_discovery_service.service.arn
} }
timeouts {} timeouts {}
@@ -216,3 +216,22 @@ resource "aws_acm_certificate" "cert" {
domain_name = "${var.domain}" domain_name = "${var.domain}"
validation_method = "DNS" validation_method = "DNS"
} }
resource "aws_service_discovery_service" "service" {
name = "integreat-app-${var.stage}"
dns_config {
namespace_id = var.local_namespace
dns_records {
ttl = 10
type = "A"
}
routing_policy = "MULTIVALUE"
}
health_check_custom_config {
failure_threshold = 1
}
}

View File

@@ -26,7 +26,7 @@
"logConfiguration": { "logConfiguration": {
"logDriver": "awslogs", "logDriver": "awslogs",
"options": { "options": {
"awslogs-group": "/ecs/integreat-app", "awslogs-group": "/ecs/integreat-app-prod",
"awslogs-region": "us-east-1", "awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs" "awslogs-stream-prefix": "ecs"
} }

View File

@@ -8,3 +8,4 @@ task_role_arn="arn:aws:iam::679918342773:role/datomic-ddb"
execution_role_arn="arn:aws:iam::679918342773:role/ecsTaskExecutionRole" execution_role_arn="arn:aws:iam::679918342773:role/ecsTaskExecutionRole"
ecs_cluster="arn:aws:ecs:us-east-1:679918342773:cluster/default" ecs_cluster="arn:aws:ecs:us-east-1:679918342773:cluster/default"
service_registry="arn:aws:servicediscovery:us-east-1:679918342773:service/srv-6auj2wqsh55k2nuj" service_registry="arn:aws:servicediscovery:us-east-1:679918342773:service/srv-6auj2wqsh55k2nuj"
local_namespace="ns-gv2z744em7myo2jp"

View File

@@ -26,7 +26,7 @@
"logConfiguration": { "logConfiguration": {
"logDriver": "awslogs", "logDriver": "awslogs",
"options": { "options": {
"awslogs-group": "/ecs/integreat-app", "awslogs-group": "/ecs/integreat-app-staging",
"awslogs-region": "us-east-1", "awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs" "awslogs-stream-prefix": "ecs"
} }

View File

@@ -1,7 +1,7 @@
{ {
"version": 4, "version": 4,
"terraform_version": "0.13.3", "terraform_version": "0.13.3",
"serial": 57, "serial": 72,
"lineage": "9b630886-8cee-a57d-c7a2-4f19f13f9c51", "lineage": "9b630886-8cee-a57d-c7a2-4f19f13f9c51",
"outputs": { "outputs": {
"aws_access_key_id": { "aws_access_key_id": {
@@ -33,7 +33,7 @@
"attributes": { "attributes": {
"account_id": "679918342773", "account_id": "679918342773",
"arn": "arn:aws:iam::679918342773:user/bryce", "arn": "arn:aws:iam::679918342773:user/bryce",
"id": "2020-09-26 04:46:35.120739 +0000 UTC", "id": "2020-09-26 05:35:11.176798 +0000 UTC",
"user_id": "AIDAJPUJFTOKO4IRADMV4" "user_id": "AIDAJPUJFTOKO4IRADMV4"
} }
} }
@@ -68,7 +68,7 @@
} }
], ],
"private_key": null, "private_key": null,
"status": "PENDING_VALIDATION", "status": "ISSUED",
"subject_alternative_names": [], "subject_alternative_names": [],
"tags": {}, "tags": {},
"validation_emails": [], "validation_emails": [],
@@ -136,11 +136,11 @@
"container_name": "", "container_name": "",
"container_port": 0, "container_port": 0,
"port": 0, "port": 0,
"registry_arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-6auj2wqsh55k2nuj" "registry_arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-m232jsqnpvd5e2xb"
} }
], ],
"tags": null, "tags": {},
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:1", "task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:4",
"timeouts": { "timeouts": {
"delete": null "delete": null
} }
@@ -148,7 +148,8 @@
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjoxMjAwMDAwMDAwMDAwfX0=", "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjoxMjAwMDAwMDAwMDAwfX0=",
"dependencies": [ "dependencies": [
"aws_ecs_task_definition.integreat_app", "aws_ecs_task_definition.integreat_app",
"aws_lb_target_group.integreat_app" "aws_lb_target_group.integreat_app",
"aws_service_discovery_service.service"
] ]
} }
] ]
@@ -162,8 +163,8 @@
{ {
"schema_version": 1, "schema_version": 1,
"attributes": { "attributes": {
"arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:1", "arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:4",
"container_definitions": "[{\"cpu\":0,\"environment\":[{\"name\":\"config\",\"value\":\"/usr/local/config/prod.edn\"}],\"essential\":true,\"image\":\"679918342773.dkr.ecr.us-east-1.amazonaws.com/integreat\",\"logConfiguration\":{\"logDriver\":\"awslogs\",\"options\":{\"awslogs-group\":\"/ecs/integreat-app\",\"awslogs-region\":\"us-east-1\",\"awslogs-stream-prefix\":\"ecs\"}},\"mountPoints\":[],\"name\":\"integreat-app\",\"portMappings\":[{\"containerPort\":3000,\"hostPort\":3000,\"protocol\":\"tcp\"},{\"containerPort\":9000,\"hostPort\":9000,\"protocol\":\"tcp\"}],\"volumesFrom\":[]}]", "container_definitions": "[{\"cpu\":0,\"environment\":[{\"name\":\"config\",\"value\":\"/usr/local/config/prod.edn\"}],\"essential\":true,\"image\":\"679918342773.dkr.ecr.us-east-1.amazonaws.com/integreat\",\"logConfiguration\":{\"logDriver\":\"awslogs\",\"options\":{\"awslogs-group\":\"/ecs/integreat-app-prod\",\"awslogs-region\":\"us-east-1\",\"awslogs-stream-prefix\":\"ecs\"}},\"mountPoints\":[],\"name\":\"integreat-app\",\"portMappings\":[{\"containerPort\":3000,\"hostPort\":3000,\"protocol\":\"tcp\"},{\"containerPort\":9000,\"hostPort\":9000,\"protocol\":\"tcp\"}],\"volumesFrom\":[]}]",
"cpu": "2048", "cpu": "2048",
"execution_role_arn": "arn:aws:iam::679918342773:role/ecsTaskExecutionRole", "execution_role_arn": "arn:aws:iam::679918342773:role/ecsTaskExecutionRole",
"family": "integreat_app_prod", "family": "integreat_app_prod",
@@ -178,8 +179,8 @@
"requires_compatibilities": [ "requires_compatibilities": [
"FARGATE" "FARGATE"
], ],
"revision": 1, "revision": 4,
"tags": {}, "tags": null,
"task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb", "task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb",
"volume": [] "volume": []
}, },
@@ -733,6 +734,44 @@
} }
] ]
}, },
{
"mode": "managed",
"type": "aws_service_discovery_service",
"name": "service",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-m232jsqnpvd5e2xb",
"description": "",
"dns_config": [
{
"dns_records": [
{
"ttl": 10,
"type": "A"
}
],
"namespace_id": "ns-gv2z744em7myo2jp",
"routing_policy": "MULTIVALUE"
}
],
"health_check_config": [],
"health_check_custom_config": [
{
"failure_threshold": 1
}
],
"id": "srv-m232jsqnpvd5e2xb",
"name": "integreat-app-prod",
"namespace_id": "ns-gv2z744em7myo2jp",
"tags": {}
},
"private": "bnVsbA=="
}
]
},
{ {
"mode": "managed", "mode": "managed",
"type": "aws_ses_receipt_rule", "type": "aws_ses_receipt_rule",

View File

@@ -1,7 +1,7 @@
{ {
"version": 4, "version": 4,
"terraform_version": "0.13.3", "terraform_version": "0.13.3",
"serial": 53, "serial": 68,
"lineage": "9b630886-8cee-a57d-c7a2-4f19f13f9c51", "lineage": "9b630886-8cee-a57d-c7a2-4f19f13f9c51",
"outputs": { "outputs": {
"aws_access_key_id": { "aws_access_key_id": {
@@ -33,7 +33,7 @@
"attributes": { "attributes": {
"account_id": "679918342773", "account_id": "679918342773",
"arn": "arn:aws:iam::679918342773:user/bryce", "arn": "arn:aws:iam::679918342773:user/bryce",
"id": "2020-09-26 04:38:28.157451 +0000 UTC", "id": "2020-09-26 05:16:10.008633 +0000 UTC",
"user_id": "AIDAJPUJFTOKO4IRADMV4" "user_id": "AIDAJPUJFTOKO4IRADMV4"
} }
} }
@@ -68,9 +68,9 @@
} }
], ],
"private_key": null, "private_key": null,
"status": "PENDING_VALIDATION", "status": "ISSUED",
"subject_alternative_names": [], "subject_alternative_names": [],
"tags": null, "tags": {},
"validation_emails": [], "validation_emails": [],
"validation_method": "DNS" "validation_method": "DNS"
}, },
@@ -78,6 +78,82 @@
} }
] ]
}, },
{
"mode": "managed",
"type": "aws_ecs_service",
"name": "integreat_app",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"capacity_provider_strategy": [],
"cluster": "arn:aws:ecs:us-east-1:679918342773:cluster/default",
"deployment_controller": [
{
"type": "ECS"
}
],
"deployment_maximum_percent": 200,
"deployment_minimum_healthy_percent": 100,
"desired_count": 1,
"enable_ecs_managed_tags": false,
"force_new_deployment": null,
"health_check_grace_period_seconds": 600,
"iam_role": "aws-service-role",
"id": "arn:aws:ecs:us-east-1:679918342773:service/integreat_app_prod",
"launch_type": "FARGATE",
"load_balancer": [
{
"container_name": "integreat-app",
"container_port": 3000,
"elb_name": "",
"target_group_arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:targetgroup/integreat-app-prod/d5b51736182d8407"
}
],
"name": "integreat_app_prod",
"network_configuration": [
{
"assign_public_ip": true,
"security_groups": [
"sg-004e5855310c453a3",
"sg-02d167406b1082698"
],
"subnets": [
"subnet-5e675761",
"subnet-8519fde2",
"subnet-89bab8d4"
]
}
],
"ordered_placement_strategy": [],
"placement_constraints": [],
"platform_version": "LATEST",
"propagate_tags": "NONE",
"scheduling_strategy": "REPLICA",
"service_registries": [
{
"container_name": "",
"container_port": 0,
"port": 0,
"registry_arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-m232jsqnpvd5e2xb"
}
],
"tags": null,
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:1",
"timeouts": {
"delete": null
}
},
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjoxMjAwMDAwMDAwMDAwfX0=",
"dependencies": [
"aws_ecs_task_definition.integreat_app",
"aws_lb_target_group.integreat_app",
"aws_service_discovery_service.service"
]
}
]
},
{ {
"mode": "managed", "mode": "managed",
"type": "aws_ecs_task_definition", "type": "aws_ecs_task_definition",
@@ -104,7 +180,7 @@
"FARGATE" "FARGATE"
], ],
"revision": 1, "revision": 1,
"tags": null, "tags": {},
"task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb", "task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb",
"volume": [] "volume": []
}, },
@@ -249,7 +325,7 @@
"subnet-8519fde2", "subnet-8519fde2",
"subnet-89bab8d4" "subnet-89bab8d4"
], ],
"tags": null, "tags": {},
"timeouts": null, "timeouts": null,
"vpc_id": "vpc-b5b7d6ce", "vpc_id": "vpc-b5b7d6ce",
"zone_id": "Z35SXDOTRQ7X7K" "zone_id": "Z35SXDOTRQ7X7K"
@@ -306,12 +382,111 @@
} }
] ]
}, },
{
"mode": "managed",
"type": "aws_lb_listener",
"name": "https",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-prod/8cc253ef044f9626/c025e5fb0a1abd93",
"certificate_arn": "arn:aws:acm:us-east-1:679918342773:certificate/edf1d7f0-8358-4a40-a44f-3ccdb81da12f",
"default_action": [
{
"authenticate_cognito": [],
"authenticate_oidc": [],
"fixed_response": [],
"forward": [],
"order": 1,
"redirect": [],
"target_group_arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:targetgroup/integreat-app-prod/d5b51736182d8407",
"type": "forward"
}
],
"id": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-prod/8cc253ef044f9626/c025e5fb0a1abd93",
"load_balancer_arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:loadbalancer/app/integreat-app-prod/8cc253ef044f9626",
"port": 443,
"protocol": "HTTPS",
"ssl_policy": "ELBSecurityPolicy-2016-08",
"timeouts": {
"read": null
}
},
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsicmVhZCI6NjAwMDAwMDAwMDAwfX0=",
"dependencies": [
"aws_acm_certificate.cert",
"aws_lb.integreat_app",
"aws_lb_target_group.integreat_app"
]
}
]
},
{ {
"mode": "managed", "mode": "managed",
"type": "aws_lb_listener_rule", "type": "aws_lb_listener_rule",
"name": "static", "name": "static",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [] "instances": [
{
"schema_version": 0,
"attributes": {
"action": [
{
"authenticate_cognito": [],
"authenticate_oidc": [],
"fixed_response": [],
"forward": [],
"order": 1,
"redirect": [
{
"host": "s3.amazonaws.com",
"path": "/app.integreatconsult.com/#{path}",
"port": "443",
"protocol": "HTTPS",
"query": "#{query}",
"status_code": "HTTP_301"
}
],
"target_group_arn": "",
"type": "redirect"
}
],
"arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener-rule/app/integreat-app-prod/8cc253ef044f9626/c025e5fb0a1abd93/648966d75d9f887e",
"condition": [
{
"host_header": [],
"http_header": [],
"http_request_method": [],
"path_pattern": [
{
"values": [
"/css/*",
"/finance-font/*",
"/img/*",
"/js/compiled/app.js",
"index.html"
]
}
],
"query_string": [],
"source_ip": []
}
],
"id": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener-rule/app/integreat-app-prod/8cc253ef044f9626/c025e5fb0a1abd93/648966d75d9f887e",
"listener_arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-prod/8cc253ef044f9626/c025e5fb0a1abd93",
"priority": 1
},
"private": "bnVsbA==",
"dependencies": [
"aws_acm_certificate.cert",
"aws_lb.integreat_app",
"aws_lb_listener.https",
"aws_lb_target_group.integreat_app"
]
}
]
}, },
{ {
"mode": "managed", "mode": "managed",
@@ -354,7 +529,7 @@
"type": "lb_cookie" "type": "lb_cookie"
} }
], ],
"tags": null, "tags": {},
"target_type": "ip", "target_type": "ip",
"vpc_id": "vpc-b5b7d6ce" "vpc_id": "vpc-b5b7d6ce"
}, },
@@ -504,7 +679,7 @@
"replication_configuration": [], "replication_configuration": [],
"request_payer": "BucketOwner", "request_payer": "BucketOwner",
"server_side_encryption_configuration": [], "server_side_encryption_configuration": [],
"tags": null, "tags": {},
"versioning": [ "versioning": [
{ {
"enabled": false, "enabled": false,
@@ -559,6 +734,44 @@
} }
] ]
}, },
{
"mode": "managed",
"type": "aws_service_discovery_service",
"name": "service",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-m232jsqnpvd5e2xb",
"description": "",
"dns_config": [
{
"dns_records": [
{
"ttl": 10,
"type": "A"
}
],
"namespace_id": "ns-gv2z744em7myo2jp",
"routing_policy": "MULTIVALUE"
}
],
"health_check_config": [],
"health_check_custom_config": [
{
"failure_threshold": 1
}
],
"id": "srv-m232jsqnpvd5e2xb",
"name": "integreat-app-prod",
"namespace_id": "ns-gv2z744em7myo2jp",
"tags": {}
},
"private": "bnVsbA=="
}
]
},
{ {
"mode": "managed", "mode": "managed",
"type": "aws_ses_receipt_rule", "type": "aws_ses_receipt_rule",