From df4410ac9d01de00759092a176dbfbc3854edce8 Mon Sep 17 00:00:00 2001 From: Bryce Date: Sun, 3 Dec 2023 20:20:26 -0800 Subject: [PATCH] Sets up toast --- resources/schema.edn | 9 + terraform/main.tf | 27 +++ .../prod/terraform.tfstate | 151 ++++++++++++++++- .../prod/terraform.tfstate.backup | 160 ++---------------- 4 files changed, 193 insertions(+), 154 deletions(-) diff --git a/resources/schema.edn b/resources/schema.edn index aaf3aaf4..fe3e3c6a 100644 --- a/resources/schema.edn +++ b/resources/schema.edn @@ -243,6 +243,8 @@ {:db/doc "square processor", :db/ident :ccp-processor/square} + {:db/doc "toast processor", + :db/ident :ccp-processor/toast} {:db/doc "ezcater processor", :db/ident :ccp-processor/ezcater} {:db/doc "koala processor", @@ -256,6 +258,13 @@ {:db/doc "No specific ccp processor", :db/ident :ccp-processor/na} + {:db/doc "Use 'Menu Group' for item category", + :db/ident :toast-category-column/menu-group} + {:db/doc "Use 'Menu' for item category", + :db/ident :toast-category-column/menu} + {:db/doc "Use 'Sales Category' for item category", + :db/ident :toast-category-column/sales-category} + {:db/valueType #:db{:ident :db.type/string}, :db/cardinality #:db{:ident :db.cardinality/one}, :db/doc "The type of the charge", diff --git a/terraform/main.tf b/terraform/main.tf index 52369fab..5caa3b7e 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -108,6 +108,33 @@ POLICY } } +resource "aws_s3_bucket" "toast_bucket" { + bucket = "toast.${var.stage}.app.integreatconsult.com" +} + +resource "aws_s3_bucket_policy" "toast_policy" { + bucket = aws_s3_bucket.toast_bucket.id + policy = data.aws_iam_policy_document.toast_policy_doc.json +} + +data "aws_iam_policy_document" "toast_policy_doc" { + statement { + principals { + type = "AWS" + identifiers = ["${var.task_role_arn}", "arn:aws:iam::679918342773:role/http-proxy"] + } + + actions = [ + "s3:*", + ] + + resources = [ + aws_s3_bucket.toast_bucket.arn, + "${aws_s3_bucket.toast_bucket.arn}/*", + ] + } +} + resource "aws_sqs_queue" "integreat-mail" { name = "integreat-mail-${var.stage}" diff --git a/terraform/terraform.tfstate.d/prod/terraform.tfstate b/terraform/terraform.tfstate.d/prod/terraform.tfstate index a211e18c..1187fde3 100644 --- a/terraform/terraform.tfstate.d/prod/terraform.tfstate +++ b/terraform/terraform.tfstate.d/prod/terraform.tfstate @@ -1,7 +1,7 @@ { "version": 4, - "terraform_version": "1.6.1", - "serial": 529, + "terraform_version": "1.6.3", + "serial": 535, "lineage": "9b630886-8cee-a57d-c7a2-4f19f13f9c51", "outputs": { "aws_access_key_id": { @@ -42,6 +42,54 @@ } ] }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "toast_policy_doc", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "2919533105", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:*\",\n \"Resource\": [\n \"arn:aws:s3:::toast.prod.app.integreatconsult.com/*\",\n \"arn:aws:s3:::toast.prod.app.integreatconsult.com\"\n ],\n \"Principal\": {\n \"AWS\": [\n \"arn:aws:iam::679918342773:role/http-proxy\",\n \"arn:aws:iam::679918342773:role/datomic-ddb\"\n ]\n }\n }\n ]\n}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "arn:aws:iam::679918342773:role/datomic-ddb", + "arn:aws:iam::679918342773:role/http-proxy" + ], + "type": "AWS" + } + ], + "resources": [ + "arn:aws:s3:::toast.prod.app.integreatconsult.com", + "arn:aws:s3:::toast.prod.app.integreatconsult.com/*" + ], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, { "mode": "managed", "type": "aws_acm_certificate", @@ -233,7 +281,7 @@ ], "tags": {}, "tags_all": {}, - "task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:679", + "task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:686", "timeouts": { "create": null, "delete": null, @@ -465,9 +513,9 @@ "provisioned_throughput_in_mibps": 0, "size_in_bytes": [ { - "value": 736219136, + "value": 780294144, "value_in_ia": 0, - "value_in_standard": 736219136 + "value_in_standard": 780294144 } ], "tags": { @@ -1131,6 +1179,77 @@ } ] }, + { + "mode": "managed", + "type": "aws_s3_bucket", + "name": "toast_bucket", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "acceleration_status": "", + "acl": null, + "arn": "arn:aws:s3:::toast.prod.app.integreatconsult.com", + "bucket": "toast.prod.app.integreatconsult.com", + "bucket_domain_name": "toast.prod.app.integreatconsult.com.s3.amazonaws.com", + "bucket_prefix": "", + "bucket_regional_domain_name": "toast.prod.app.integreatconsult.com.s3.amazonaws.com", + "cors_rule": [], + "force_destroy": false, + "grant": [ + { + "id": "e30528e0ba05fd1f250869c1b4db0eff90001b4d9ad90dd2e01b210844f83e5a", + "permissions": [ + "FULL_CONTROL" + ], + "type": "CanonicalUser", + "uri": "" + } + ], + "hosted_zone_id": "Z3AQBSTGFYJSTF", + "id": "toast.prod.app.integreatconsult.com", + "lifecycle_rule": [], + "logging": [], + "object_lock_configuration": [], + "object_lock_enabled": false, + "policy": "", + "region": "us-east-1", + "replication_configuration": [], + "request_payer": "BucketOwner", + "server_side_encryption_configuration": [ + { + "rule": [ + { + "apply_server_side_encryption_by_default": [ + { + "kms_master_key_id": "", + "sse_algorithm": "AES256" + } + ], + "bucket_key_enabled": false + } + ] + } + ], + "tags": null, + "tags_all": {}, + "timeouts": null, + "versioning": [ + { + "enabled": false, + "mfa_delete": false + } + ], + "website": [], + "website_domain": null, + "website_endpoint": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInJlYWQiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" + } + ] + }, { "mode": "managed", "type": "aws_s3_bucket_notification", @@ -1166,6 +1285,28 @@ } ] }, + { + "mode": "managed", + "type": "aws_s3_bucket_policy", + "name": "toast_policy", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "toast.prod.app.integreatconsult.com", + "id": "toast.prod.app.integreatconsult.com", + "policy": "{\"Statement\":[{\"Action\":\"s3:*\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam::679918342773:role/http-proxy\",\"arn:aws:iam::679918342773:role/datomic-ddb\"]},\"Resource\":[\"arn:aws:s3:::toast.prod.app.integreatconsult.com/*\",\"arn:aws:s3:::toast.prod.app.integreatconsult.com\"],\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.toast_bucket", + "data.aws_iam_policy_document.toast_policy_doc" + ] + } + ] + }, { "mode": "managed", "type": "aws_service_discovery_service", diff --git a/terraform/terraform.tfstate.d/prod/terraform.tfstate.backup b/terraform/terraform.tfstate.d/prod/terraform.tfstate.backup index db0ba315..5e66d7be 100644 --- a/terraform/terraform.tfstate.d/prod/terraform.tfstate.backup +++ b/terraform/terraform.tfstate.d/prod/terraform.tfstate.backup @@ -1,7 +1,7 @@ { "version": 4, - "terraform_version": "1.6.1", - "serial": 524, + "terraform_version": "1.6.3", + "serial": 531, "lineage": "9b630886-8cee-a57d-c7a2-4f19f13f9c51", "outputs": { "aws_access_key_id": { @@ -233,7 +233,7 @@ ], "tags": {}, "tags_all": {}, - "task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:631", + "task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:686", "timeouts": { "create": null, "delete": null, @@ -465,9 +465,9 @@ "provisioned_throughput_in_mibps": 0, "size_in_bytes": [ { - "value": 643549184, + "value": 780294144, "value_in_ia": 0, - "value_in_standard": 643549184 + "value_in_standard": 780294144 } ], "tags": { @@ -832,19 +832,19 @@ "attributes": { "arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:targetgroup/integreat-app-prod/d5b51736182d8407", "arn_suffix": "targetgroup/integreat-app-prod/d5b51736182d8407", - "connection_termination": null, + "connection_termination": false, "deregistration_delay": "120", "health_check": [ { "enabled": true, "healthy_threshold": 2, - "interval": 15, + "interval": 60, "matcher": "200", "path": "/api/health-check", "port": "traffic-port", "protocol": "HTTP", "timeout": 14, - "unhealthy_threshold": 5 + "unhealthy_threshold": 3 } ], "id": "arn:aws:elasticloadbalancing:us-east-1:679918342773:targetgroup/integreat-app-prod/d5b51736182d8407", @@ -1902,7 +1902,7 @@ "name_prefix": "", "role_arn": "", "schedule_expression": "rate(6 hours)", - "tags": null, + "tags": {}, "tags_all": {} }, "sensitive_attributes": [], @@ -1949,7 +1949,7 @@ "placement_constraint": [], "platform_version": "", "propagate_tags": "TASK_DEFINITION", - "tags": null, + "tags": {}, "task_count": 1, "task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/insight_outcome_recommendation_prod:1" } @@ -2009,7 +2009,7 @@ "revision": 1, "runtime_platform": [], "skip_destroy": false, - "tags": null, + "tags": {}, "tags_all": {}, "task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb", "volume": [] @@ -2653,144 +2653,6 @@ } ] }, - { - "module": "module.square2_import_job", - "mode": "managed", - "type": "aws_cloudwatch_event_rule", - "name": "schedule", - "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:events:us-east-1:679918342773:rule/square2-import-job-schedule", - "description": "", - "event_bus_name": "default", - "event_pattern": null, - "id": "square2-import-job-schedule", - "is_enabled": true, - "name": "square2-import-job-schedule", - "name_prefix": "", - "role_arn": "", - "schedule_expression": "rate(5 hours)", - "tags": {}, - "tags_all": {} - }, - "sensitive_attributes": [], - "private": "bnVsbA==" - } - ] - }, - { - "module": "module.square2_import_job", - "mode": "managed", - "type": "aws_cloudwatch_event_target", - "name": "job_target", - "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ecs:us-east-1:679918342773:cluster/default", - "batch_target": [], - "dead_letter_config": [], - "ecs_target": [ - { - "capacity_provider_strategy": [], - "enable_ecs_managed_tags": false, - "enable_execute_command": false, - "group": "", - "launch_type": "FARGATE", - "network_configuration": [ - { - "assign_public_ip": true, - "security_groups": [ - "sg-004e5855310c453a3", - "sg-02d167406b1082698" - ], - "subnets": [ - "subnet-5e675761", - "subnet-8519fde2", - "subnet-89bab8d4" - ] - } - ], - "ordered_placement_strategy": [], - "placement_constraint": [], - "platform_version": "", - "propagate_tags": "TASK_DEFINITION", - "tags": {}, - "task_count": 1, - "task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/square2_import_job_prod:2" - } - ], - "event_bus_name": "default", - "http_target": [], - "id": "square2-import-job-schedule-square2-import-job", - "input": "", - "input_path": "", - "input_transformer": [], - "kinesis_target": [], - "redshift_target": [], - "retry_policy": [], - "role_arn": "arn:aws:iam::679918342773:role/service-role/Amazon_EventBridge_Invoke_ECS_1758992733", - "rule": "square2-import-job-schedule", - "run_command_targets": [], - "sqs_target": [], - "target_id": "square2-import-job" - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==", - "dependencies": [ - "module.square2_import_job.aws_cloudwatch_event_rule.schedule", - "module.square2_import_job.aws_ecs_task_definition.background_taskdef" - ] - } - ] - }, - { - "module": "module.square2_import_job", - "mode": "managed", - "type": "aws_ecs_task_definition", - "name": "background_taskdef", - "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/square2_import_job_prod:2", - "arn_without_revision": "arn:aws:ecs:us-east-1:679918342773:task-definition/square2_import_job_prod", - "container_definitions": "[{\"cpu\":0,\"dockerLabels\":{\"com.datadoghq.tags.env\":\"prod\",\"com.datadoghq.tags.service\":\"square2-import-job\"},\"environment\":[{\"name\":\"DD_CONTAINER_ENV_AS_TAGS\",\"value\":\"{\\\"INTEGREAT_JOB\\\":\\\"background_job\\\"}\"},{\"name\":\"DD_ENV\",\"value\":\"prod\"},{\"name\":\"DD_SERVICE\",\"value\":\"square2-import-job\"},{\"name\":\"INTEGREAT_JOB\",\"value\":\"square2-import-job\"},{\"name\":\"config\",\"value\":\"/usr/local/config/prod-background-worker.edn\"}],\"essential\":true,\"image\":\"679918342773.dkr.ecr.us-east-1.amazonaws.com/integreat-cloud:prod\",\"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\":9000,\"hostPort\":9000,\"protocol\":\"tcp\"},{\"containerPort\":9090,\"hostPort\":9090,\"protocol\":\"tcp\"}],\"volumesFrom\":[]},{\"cpu\":0,\"environment\":[{\"name\":\"DD_API_KEY\",\"value\":\"ce10d932c47b358e81081ae67bd8c112\"},{\"name\":\"ECS_FARGATE\",\"value\":\"true\"}],\"essential\":true,\"image\":\"public.ecr.aws/datadog/agent:latest\",\"mountPoints\":[],\"name\":\"datadog-agent\",\"portMappings\":[],\"volumesFrom\":[]}]", - "cpu": "1024", - "ephemeral_storage": [], - "execution_role_arn": "arn:aws:iam::679918342773:role/ecsTaskExecutionRole", - "family": "square2_import_job_prod", - "id": "square2_import_job_prod", - "inference_accelerator": [], - "ipc_mode": "", - "memory": "4096", - "network_mode": "awsvpc", - "pid_mode": "", - "placement_constraints": [], - "proxy_configuration": [], - "requires_compatibilities": [ - "FARGATE" - ], - "revision": 2, - "runtime_platform": [], - "skip_destroy": null, - "tags": {}, - "tags_all": {}, - "task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb", - "volume": [] - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==" - } - ] - }, { "module": "module.square_import_job", "mode": "managed",