From 17ab15b2a16a108220c8749aafca8a90507a38b3 Mon Sep 17 00:00:00 2001 From: vladsha-dev Date: Mon, 5 May 2025 14:34:07 +0200 Subject: [PATCH 01/12] Add deployment configs for RBA instance --- .github/workflows/deploy_to_aws.yml | 26 ++++---- .github/workflows/destroy.yml | 2 + .github/workflows/release-deploy.yml | 4 ++ deployment/environments/terraform-rba.tfvars | 68 ++++++++++++++++++++ src/django/oar/settings.py | 27 +++++++- src/django/web/views.py | 3 +- 6 files changed, 114 insertions(+), 16 deletions(-) create mode 100644 deployment/environments/terraform-rba.tfvars diff --git a/.github/workflows/deploy_to_aws.yml b/.github/workflows/deploy_to_aws.yml index c2e2eac35..0817429ce 100644 --- a/.github/workflows/deploy_to_aws.yml +++ b/.github/workflows/deploy_to_aws.yml @@ -18,6 +18,7 @@ on: - Pre-prod - Staging - Production + - Rba default: Development deploy-plan-only: description: 'Plan only' @@ -38,7 +39,7 @@ on: jobs: init-and-plan: runs-on: ubuntu-latest - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} id: get_env_name @@ -52,6 +53,7 @@ jobs: uses: actions/checkout@v4 with: repository: 'opensupplyhub/ci-deployment' + ref: 'OSDEV-1947-add-new-environment-for-rba' path: 'terraform-config' token: ${{ secrets.PAT }} @@ -87,7 +89,7 @@ jobs: apply: needs: init-and-plan runs-on: ubuntu-latest - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} if: ${{ inputs.deploy-plan-only == false }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} @@ -125,7 +127,7 @@ jobs: build_and_push_react_app: needs: apply runs-on: ubuntu-latest - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} if: ${{ inputs.deploy-plan-only == false }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} @@ -191,7 +193,7 @@ jobs: build_and_push_docker_image: needs: build_and_push_react_app runs-on: ubuntu-latest - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} if: ${{ inputs.deploy-plan-only == false }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} @@ -285,7 +287,7 @@ jobs: create_kafka_topic: needs: build_and_push_docker_image runs-on: ubuntu-latest - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} if: ${{ inputs.deploy-plan-only == false }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} @@ -307,7 +309,7 @@ jobs: stop_logstash: needs: create_kafka_topic runs-on: ubuntu-latest - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} if: ${{ inputs.deploy-plan-only == false }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} @@ -331,7 +333,7 @@ jobs: restore_database: needs: stop_logstash runs-on: self-hosted - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} if: ${{ inputs.deploy-plan-only == false }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} @@ -342,7 +344,7 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - name: Restore database for ${{ vars.ENV_NAME }} - if: ${{ (vars.ENV_NAME != 'Production' && vars.ENV_NAME != 'Staging' && vars.ENV_NAME != 'Development') && inputs.restore-db == true}} + if: ${{ (vars.ENV_NAME == 'Preprod' && vars.ENV_NAME == 'Test') && inputs.restore-db == true}} run: | cd ./src/anon-tools mkdir -p ./keys @@ -377,7 +379,7 @@ jobs: update_services: needs: restore_database runs-on: ubuntu-latest - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} if: ${{ inputs.deploy-plan-only == false }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} @@ -403,7 +405,7 @@ jobs: post_deploy: needs: update_services runs-on: ubuntu-latest - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} if: ${{ inputs.deploy-plan-only == false }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} @@ -424,7 +426,7 @@ jobs: clear_opensearch: needs: post_deploy runs-on: ubuntu-latest - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} if: ${{ inputs.deploy-plan-only == false }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} @@ -484,7 +486,7 @@ jobs: start_logstash: needs: clear_opensearch runs-on: ubuntu-latest - environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || 'None' }} + environment: ${{ inputs.deploy-env || (github.ref_name == 'main' && 'Development') || (startsWith(github.ref_name, 'releases/') && 'Pre-prod') || (startsWith(github.ref_name, 'production-') && 'Production') || (startsWith(github.ref_name, 'sandbox-') && 'Staging') || (startsWith(github.ref_name, 'rba-') && 'Rba') || 'None' }} if: ${{ inputs.deploy-plan-only == false }} steps: - name: Get Environment Name for ${{ vars.ENV_NAME }} diff --git a/.github/workflows/destroy.yml b/.github/workflows/destroy.yml index 678f0c2cd..9ecb42374 100644 --- a/.github/workflows/destroy.yml +++ b/.github/workflows/destroy.yml @@ -9,6 +9,7 @@ on: type: choice options: - Pre-prod + - Rba default: Pre-prod jobs: @@ -83,6 +84,7 @@ jobs: uses: actions/checkout@v4 with: repository: 'opensupplyhub/ci-deployment' + ref: 'OSDEV-1947-add-new-environment-for-rba' path: 'terraform-config' token: ${{ secrets.PAT }} diff --git a/.github/workflows/release-deploy.yml b/.github/workflows/release-deploy.yml index 130ae5dad..c4738c09c 100644 --- a/.github/workflows/release-deploy.yml +++ b/.github/workflows/release-deploy.yml @@ -14,6 +14,7 @@ on: options: - sandbox - production + - rba default: sandbox clear-opensearch: description: 'Clear the custom OpenSearch indexes and templates' @@ -45,6 +46,9 @@ jobs: if [[ ${{ github.event.inputs.deploy-env }} = "production" ]]; then ENV="Production" + elif [[ ${{ github.event.inputs.deploy-env }} = "rba" ]]; + then + ENV="Rba" else ENV="Staging" fi diff --git a/deployment/environments/terraform-rba.tfvars b/deployment/environments/terraform-rba.tfvars new file mode 100644 index 000000000..1966b426a --- /dev/null +++ b/deployment/environments/terraform-rba.tfvars @@ -0,0 +1,68 @@ +project = "OpenSupplyHub" +environment = "Rba" + +aws_region = "eu-west-1" +aws_availability_zones = ["eu-west-1a", "eu-west-1b"] + +r53_private_hosted_zone = "osh.internal" +r53_public_hosted_zone = "opensupplyhub.org" + +cloudfront_price_class = "PriceClass_All" + +bastion_ami = "ami-0bb3fad3c0286ebd5" +bastion_instance_type = "t3.nano" + +rds_allocated_storage = "256" +rds_engine_version = "16" +rds_parameter_group_family = "postgres16" +rds_instance_type = "db.m6in.4xlarge" +rds_database_identifier = "opensupplyhub-enc-rba" +rds_database_name = "opensupplyhub" +rds_multi_az = false +rds_storage_encrypted = true + +app_ecs_desired_count = "10" +app_ecs_deployment_min_percent = "100" +app_ecs_deployment_max_percent = "400" +app_ecs_grace_period_seconds = "420" +app_fargate_cpu = "2048" +app_fargate_memory = "4096" + +app_ecs_max_cpu_threshold = 85 +app_ecs_min_cpu_threshold = 15 +app_ecs_scale_target_max_capacity = 10 +app_ecs_scale_target_min_capacity = 5 +app_ecs_cooldown_scale_down = 300 +app_ecs_cooldown_scale_up = 180 + +cli_fargate_cpu = "2048" +cli_fargate_memory = "8192" + +batch_default_ce_spot_fleet_bid_percentage = 60 +batch_ami_id = "ami-002e2fef4b94f8fd0" + +batch_default_ce_min_vcpus = 0 +batch_default_ce_max_vcpus = 128 +batch_default_job_memory = 8192 + +batch_default_ce_instance_types = ["c5", "m5"] + +gunicorn_worker_timeout = "360" + +ec_memcached_identifier = "opensupplyhub-rba" + +rds_final_snapshot_identifier = "opensupplyhub-rds-rba" +topic_dedup_basic_name = "basic-name" +dedupe_hub_live = true +dedupe_hub_name = "deduplicate" +dedupe_hub_version = 1 +app_cc_ecs_desired_count = 0 +app_dd_fargate_cpu = 4096 +app_dd_fargate_memory = 16384 +app_dd_ecs_desired_count = 1 +django_log_level="DEBUG" + +opensearch_instance_type = "m6g.large.search" + +app_logstash_fargate_cpu = 256 +app_logstash_fargate_memory = 2048 \ No newline at end of file diff --git a/src/django/oar/settings.py b/src/django/oar/settings.py index 14535c03c..870029966 100644 --- a/src/django/oar/settings.py +++ b/src/django/oar/settings.py @@ -34,7 +34,7 @@ DEBUG = (ENVIRONMENT == 'Local') VALID_ENVIRONMENTS = ('Production', 'Staging', 'Development', 'Test', - 'Preprod', 'Local') + 'Preprod', 'Rba', 'Local') if ENVIRONMENT not in VALID_ENVIRONMENTS: raise ImproperlyConfigured( 'Invalid ENVIRONMENT provided, must be one of {}' @@ -427,6 +427,24 @@ }, 'AWS_REGION': 'eu-west-1', }, + 'rba': { + 'TASK_DEFINITION_NAME': 'OpenSupplyHubRbaAppCLI', + 'CONTAINER_NAME': 'django', + 'CLUSTER_NAME': 'ecsOpenSupplyHubRbaCluster', + 'LAUNCH_TYPE': 'FARGATE', + 'PLATFORM_VERSION': '1.4.0', + 'SECURITY_GROUP_TAGS': { + 'Name': 'sgAppEcsService', + 'Environment': 'Rba', + 'Project': 'OpenSupplyHub' + }, + 'SUBNET_TAGS': { + 'Name': 'PrivateSubnet', + 'Environment': 'Rba', + 'Project': 'OpenSupplyHub' + }, + 'AWS_REGION': 'eu-west-1', + }, 'test': { 'TASK_DEFINITION_NAME': 'OpenSupplyHubTestAppCLI', 'CONTAINER_NAME': 'django', @@ -513,8 +531,11 @@ 'Invalid OAR_CLIENT_KEY provided, must be set') # Hubspot settings -HUBSPOT_API_KEY = os.getenv('HUBSPOT_API_KEY') -HUBSPOT_SUBSCRIPTION_ID = os.getenv('HUBSPOT_SUBSCRIPTION_ID') +raw_hubspot_key = os.getenv('HUBSPOT_API_KEY') +HUBSPOT_API_KEY = raw_hubspot_key if raw_hubspot_key else None + +raw_hubspot_id = os.getenv('HUBSPOT_SUBSCRIPTION_ID') +HUBSPOT_SUBSCRIPTION_ID = raw_hubspot_id if raw_hubspot_id else None # CORS # Regex defining which endpoints enable CORS diff --git a/src/django/web/views.py b/src/django/web/views.py index 5b5ff7d23..2b3cb8494 100644 --- a/src/django/web/views.py +++ b/src/django/web/views.py @@ -18,7 +18,8 @@ def environment(request): } # Add Environment variable, lowered for easier comparison - # One of `development`, `testing`, `staging`, `production` + # One of `development`, `test`, `preprod`, `rba`, + # `local`, `staging`, `production` environment['ENVIRONMENT'] = settings.ENVIRONMENT.lower() environment['OAR_CLIENT_KEY'] = settings.OAR_CLIENT_KEY From 95b5c56ddde30b70f9994818f364d7a976aa73e5 Mon Sep 17 00:00:00 2001 From: vladsha-dev Date: Tue, 6 May 2025 13:06:44 +0200 Subject: [PATCH 02/12] Add toggle for export csv job and add RBA to the DB - Apply Anonymized DB workflow --- .github/workflows/db_apply_anonimized.yml | 1 + deployment/environments/terraform-rba.tfvars | 4 +++- deployment/terraform/batch.tf | 1 + deployment/terraform/variables.tf | 8 ++++++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/db_apply_anonimized.yml b/.github/workflows/db_apply_anonimized.yml index f46c0a030..900d5e119 100644 --- a/.github/workflows/db_apply_anonimized.yml +++ b/.github/workflows/db_apply_anonimized.yml @@ -10,6 +10,7 @@ on: options: - Test - Pre-prod + - Rba default: Test jobs: diff --git a/deployment/environments/terraform-rba.tfvars b/deployment/environments/terraform-rba.tfvars index 1966b426a..6e0acc28e 100644 --- a/deployment/environments/terraform-rba.tfvars +++ b/deployment/environments/terraform-rba.tfvars @@ -65,4 +65,6 @@ django_log_level="DEBUG" opensearch_instance_type = "m6g.large.search" app_logstash_fargate_cpu = 256 -app_logstash_fargate_memory = 2048 \ No newline at end of file +app_logstash_fargate_memory = 2048 + +export_csv_enabled = false \ No newline at end of file diff --git a/deployment/terraform/batch.tf b/deployment/terraform/batch.tf index 0a5d5a30d..09a6ccd55 100644 --- a/deployment/terraform/batch.tf +++ b/deployment/terraform/batch.tf @@ -284,6 +284,7 @@ resource "aws_cloudwatch_event_rule" "export_csv_schedule" { name = "rule${local.short}ExportCsvSchedule" description = "Runs the export_csv job on a schedule" schedule_expression = var.export_csv_schedule_expression + state = var.export_csv_enabled ? "ENABLED" : "DISABLED" } resource "aws_cloudwatch_event_target" "export_csv" { diff --git a/deployment/terraform/variables.tf b/deployment/terraform/variables.tf index b52050ba0..0f3fcaf01 100644 --- a/deployment/terraform/variables.tf +++ b/deployment/terraform/variables.tf @@ -681,6 +681,12 @@ variable "anonymized_database_password" { sensitive = true } +variable "export_csv_enabled" { + description = "Toggle to enable or disable the export csv scheduled job" + type = bool + default = true +} + variable "export_csv_schedule_expression" { type = string default = "cron(0 0 1 * ? *)" @@ -691,12 +697,14 @@ variable "google_service_account_creds_base64" { type = string sensitive = true description = "Base64-encoded Google service account key" + default = "" # No account key passed when export_csv_enabled is false. } variable "google_drive_shared_directory_id" { type = string sensitive = true description = "The ID of the shared directory in Google Drive" + default = "" # No directory ID passed when export_csv_enabled is false. } variable "app_ecs_max_cpu_threshold" { From fd3de6f6e4124bf7a4d72954a5604707fa1507e0 Mon Sep 17 00:00:00 2001 From: vladsha-dev Date: Tue, 6 May 2025 13:13:49 +0200 Subject: [PATCH 03/12] Replaced state with is_enabled --- deployment/terraform/batch.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/terraform/batch.tf b/deployment/terraform/batch.tf index 09a6ccd55..8ef22b137 100644 --- a/deployment/terraform/batch.tf +++ b/deployment/terraform/batch.tf @@ -284,7 +284,7 @@ resource "aws_cloudwatch_event_rule" "export_csv_schedule" { name = "rule${local.short}ExportCsvSchedule" description = "Runs the export_csv job on a schedule" schedule_expression = var.export_csv_schedule_expression - state = var.export_csv_enabled ? "ENABLED" : "DISABLED" + is_enabled = var.export_csv_enabled } resource "aws_cloudwatch_event_target" "export_csv" { From 7a899c17ed3622cd40105222e9f3fc5dd9b94be2 Mon Sep 17 00:00:00 2001 From: vladsha-dev Date: Tue, 6 May 2025 15:10:02 +0200 Subject: [PATCH 04/12] Update bucket name --- src/anon-tools/do_restore.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/anon-tools/do_restore.sh b/src/anon-tools/do_restore.sh index 669e1c71e..710c5eca0 100755 --- a/src/anon-tools/do_restore.sh +++ b/src/anon-tools/do_restore.sh @@ -1,7 +1,7 @@ #!/bin/bash -aws s3 cp s3://oshub-dumps-anonymized/osh_prod_large_anon.dump /dumps/osh_prod_large.dump +aws s3 cp s3://oshub-dumps-anonymized-2/osh_prod_large_anon.dump /dumps/osh_prod_large.dump bastion="$(aws ec2 describe-instances --filters "Name=tag:Environment,Values=$ENVIRONMENT" --query 'Reservations[0].Instances[0].PublicDnsName' --output text)" From eb9423f165183f3056178871a4d051154ae573a7 Mon Sep 17 00:00:00 2001 From: vladsha-dev Date: Tue, 6 May 2025 17:39:36 +0200 Subject: [PATCH 05/12] Remove default values and fixed bug in local env indentification --- deployment/terraform/variables.tf | 2 -- src/react/public/index.html | 2 +- src/react/src/util/util.ga.js | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/deployment/terraform/variables.tf b/deployment/terraform/variables.tf index 0f3fcaf01..d03c248a5 100644 --- a/deployment/terraform/variables.tf +++ b/deployment/terraform/variables.tf @@ -697,14 +697,12 @@ variable "google_service_account_creds_base64" { type = string sensitive = true description = "Base64-encoded Google service account key" - default = "" # No account key passed when export_csv_enabled is false. } variable "google_drive_shared_directory_id" { type = string sensitive = true description = "The ID of the shared directory in Google Drive" - default = "" # No directory ID passed when export_csv_enabled is false. } variable "app_ecs_max_cpu_threshold" { diff --git a/src/react/public/index.html b/src/react/public/index.html index 411221022..2a2571967 100644 --- a/src/react/public/index.html +++ b/src/react/public/index.html @@ -78,7 +78,7 @@