From b8222a22cee0ca4766f845de7c24ca577202c87a Mon Sep 17 00:00:00 2001 From: Gytis Ivaskevicius Date: Wed, 17 Jul 2024 22:17:17 +0300 Subject: [PATCH 1/6] chore: implement AWS Global Accelerator --- .../deployments/backend-ingress.nix | 30 +++++++++++++++++-- nix/cardano-services/deployments/default.nix | 24 ++++++++++++++- .../tf-outputs/lace-dev-us-east-1.json | 2 +- .../tf-outputs/lace-live-eu-central-1.json | 2 +- 4 files changed, 53 insertions(+), 5 deletions(-) diff --git a/nix/cardano-services/deployments/backend-ingress.nix b/nix/cardano-services/deployments/backend-ingress.nix index b4c40c1bc7b..9d8be7ebd3f 100644 --- a/nix/cardano-services/deployments/backend-ingress.nix +++ b/nix/cardano-services/deployments/backend-ingress.nix @@ -6,13 +6,40 @@ utils, ... }: { + templates.accelerator = lib.mkIf (values.useAccelerator && values.ingress.enabled) { + apiVersion = "operator.h3poteto.dev/v1alpha1"; + kind = "EndpointGroupBinding"; + metadata.name = "${chart.name}-main"; + spec = { + endpointGroupArn = values.acceleratorArn; + ingressRef.name = "${chart.name}-backend"; + }; + }; + templates.backend-ingress = lib.mkIf values.ingress.enabled { apiVersion = "networking.k8s.io/v1"; kind = "Ingress"; metadata = { name = "${chart.name}-backend"; labels = utils.appLabels "backend"; - annotations = { + annotations = if values.useAccelerator then { + "service.beta.kubernetes.io/aws-load-balancer-backend-protocol" = "tcp"; + "service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled" = "true"; + "service.beta.kubernetes.io/aws-load-balancer-type" = "external"; + "alb.ingress.kubernetes.io/scheme" = "internet-facing"; + "service.beta.kubernetes.io/aws-load-balancer-scheme" = "internet-facing"; + "alb.ingress.kubernetes.io/target-type" = "ip"; + "service.beta.kubernetes.io/aws-load-balancer-nlb-target-type" = "ip"; + "service.beta.kubernetes.io/aws-load-balancer-proxy-protocol" = "*"; + "service.beta.kubernetes.io/aws-load-balancer-target-group-attributes" = "proxy_protocol_v2.enabled=true,preserve_client_ip.enabled=true"; + + "alb.ingress.kubernetes.io/listen-ports" = builtins.toJSON [{HTTP = 80;} {HTTPS = 443;}]; + #"alb.ingress.kubernetes.io/wafv2-acl-arn" = values.backend.wafARN; + "alb.ingress.kubernetes.io/healthcheck-path" = "${values.cardano-services.httpPrefix}/health"; + "alb.ingress.kubernetes.io/healthcheck-interval-seconds" = toString values.backend.albHealthcheck.interval; + "alb.ingress.kubernetes.io/healthcheck-timeout-seconds" = toString values.backend.albHealthcheck.timeout; + "alb.ingress.kubernetes.io/group.order" = toString values.cardano-services.ingresOrder; + } else { "alb.ingress.kubernetes.io/actions.ssl-redirect" = builtins.toJSON { Type = "redirect"; RedirectConfig = { @@ -32,7 +59,6 @@ "external-dns.alpha.kubernetes.io/aws-region" = config.region; "external-dns.alpha.kubernetes.io/set-identifier" = values.backend.dnsId; "alb.ingress.kubernetes.io/group.name" = chart.namespace; - # ACM "alb.ingress.kubernetes.io/group.order" = toString values.cardano-services.ingresOrder; }; }; diff --git a/nix/cardano-services/deployments/default.nix b/nix/cardano-services/deployments/default.nix index 5b4d8911c1a..b37389b7b2b 100644 --- a/nix/cardano-services/deployments/default.nix +++ b/nix/cardano-services/deployments/default.nix @@ -102,6 +102,8 @@ in }; values = { + useAccelerator = false; + acceleratorArn = tf-outputs.${final.region}.accelerators.${final.namespace} or null; postgresName = "${final.namespace}-postgresql"; stakepool.databaseName = "stakepool"; ingress.enabled = true; @@ -866,7 +868,6 @@ in (map (v: "/v${v}/handle") versions.handle) ]; }; - chain-history-provider.enabled = false; }; "ops-preview-1@us-east-1" = final: { @@ -902,6 +903,27 @@ in }; values = { + useAccelerator = true; + cardano-services = { + ingresOrder = 99; + }; + }; + }; + + "ops-preprod-1@eu-central-1" = final: { + namespace = "ops-preprod-1"; + network = "preprod"; + context = "eks-admin"; + region = "eu-central-1"; + + providers = { + backend = { + enabled = true; + }; + }; + + values = { + useAccelerator = true; cardano-services = { ingresOrder = 99; }; diff --git a/nix/cardano-services/deployments/tf-outputs/lace-dev-us-east-1.json b/nix/cardano-services/deployments/tf-outputs/lace-dev-us-east-1.json index 60afd677802..5601ef458b9 100755 --- a/nix/cardano-services/deployments/tf-outputs/lace-dev-us-east-1.json +++ b/nix/cardano-services/deployments/tf-outputs/lace-dev-us-east-1.json @@ -1 +1 @@ -{"acm_arn":"arn:aws:acm:us-east-1:926093910549:certificate/f136a39b-3556-4ddf-85ac-ac5b7431dd34","acm_dapp_arn":"arn:aws:acm:us-east-1:926093910549:certificate/84cb06a8-cf8e-4485-b117-d0ff5c8304b0","waf_arn":"arn:aws:wafv2:us-east-1:926093910549:regional/webacl/rate-limit/d4216c0e-b464-4383-953f-3262f4cd3cb6"} \ No newline at end of file +{"accelerators":{"ops-preprod-1":"arn:aws:globalaccelerator::926093910549:accelerator/3c1f8a14-aa0b-4114-b287-33ea56f0ddcb/listener/51576def/endpoint-group/7fde6f56d002"},"acm_arn":"arn:aws:acm:us-east-1:926093910549:certificate/f136a39b-3556-4ddf-85ac-ac5b7431dd34","acm_dapp_arn":"arn:aws:acm:us-east-1:926093910549:certificate/84cb06a8-cf8e-4485-b117-d0ff5c8304b0","waf_arn":"arn:aws:wafv2:us-east-1:926093910549:regional/webacl/rate-limit/d4216c0e-b464-4383-953f-3262f4cd3cb6"} \ No newline at end of file diff --git a/nix/cardano-services/deployments/tf-outputs/lace-live-eu-central-1.json b/nix/cardano-services/deployments/tf-outputs/lace-live-eu-central-1.json index 2c7280e3092..a1e7e553cd4 100755 --- a/nix/cardano-services/deployments/tf-outputs/lace-live-eu-central-1.json +++ b/nix/cardano-services/deployments/tf-outputs/lace-live-eu-central-1.json @@ -1 +1 @@ -{"acm_arn":"arn:aws:acm:eu-central-1:926093910549:certificate/c0da842b-45c2-4306-ab09-139c47b437d0","acm_dapp_arn":"arn:aws:acm:eu-central-1:926093910549:certificate/07886406-64df-477c-b76b-f6a8d7c708ce","waf_arn":"arn:aws:wafv2:eu-central-1:926093910549:regional/webacl/rate-limit/bee0cf89-9c9a-4fb3-a609-88a3bb2edc7e"} \ No newline at end of file +{"accelerators":{"ops-preprod-1":"arn:aws:globalaccelerator::926093910549:accelerator/3c1f8a14-aa0b-4114-b287-33ea56f0ddcb/listener/51576def/endpoint-group/82f43e613909"},"acm_arn":"arn:aws:acm:eu-central-1:926093910549:certificate/c0da842b-45c2-4306-ab09-139c47b437d0","acm_dapp_arn":"arn:aws:acm:eu-central-1:926093910549:certificate/07886406-64df-477c-b76b-f6a8d7c708ce","waf_arn":"arn:aws:wafv2:eu-central-1:926093910549:regional/webacl/rate-limit/bee0cf89-9c9a-4fb3-a609-88a3bb2edc7e"} \ No newline at end of file From 6596c0c88ff234cb664f3e9f6c30ce7633cdc65b Mon Sep 17 00:00:00 2001 From: Gytis Ivaskevicius Date: Wed, 17 Jul 2024 22:18:58 +0300 Subject: [PATCH 2/6] chore: run treefmt on nix files --- .../deployments/backend-ingress.nix | 77 ++++++++++--------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/nix/cardano-services/deployments/backend-ingress.nix b/nix/cardano-services/deployments/backend-ingress.nix index 9d8be7ebd3f..35265997167 100644 --- a/nix/cardano-services/deployments/backend-ingress.nix +++ b/nix/cardano-services/deployments/backend-ingress.nix @@ -6,7 +6,7 @@ utils, ... }: { - templates.accelerator = lib.mkIf (values.useAccelerator && values.ingress.enabled) { + templates.accelerator = lib.mkIf (values.useAccelerator && values.ingress.enabled) { apiVersion = "operator.h3poteto.dev/v1alpha1"; kind = "EndpointGroupBinding"; metadata.name = "${chart.name}-main"; @@ -22,45 +22,48 @@ metadata = { name = "${chart.name}-backend"; labels = utils.appLabels "backend"; - annotations = if values.useAccelerator then { - "service.beta.kubernetes.io/aws-load-balancer-backend-protocol" = "tcp"; - "service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled" = "true"; - "service.beta.kubernetes.io/aws-load-balancer-type" = "external"; - "alb.ingress.kubernetes.io/scheme" = "internet-facing"; - "service.beta.kubernetes.io/aws-load-balancer-scheme" = "internet-facing"; - "alb.ingress.kubernetes.io/target-type" = "ip"; - "service.beta.kubernetes.io/aws-load-balancer-nlb-target-type" = "ip"; - "service.beta.kubernetes.io/aws-load-balancer-proxy-protocol" = "*"; - "service.beta.kubernetes.io/aws-load-balancer-target-group-attributes" = "proxy_protocol_v2.enabled=true,preserve_client_ip.enabled=true"; + annotations = + if values.useAccelerator + then { + "service.beta.kubernetes.io/aws-load-balancer-backend-protocol" = "tcp"; + "service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled" = "true"; + "service.beta.kubernetes.io/aws-load-balancer-type" = "external"; + "alb.ingress.kubernetes.io/scheme" = "internet-facing"; + "service.beta.kubernetes.io/aws-load-balancer-scheme" = "internet-facing"; + "alb.ingress.kubernetes.io/target-type" = "ip"; + "service.beta.kubernetes.io/aws-load-balancer-nlb-target-type" = "ip"; + "service.beta.kubernetes.io/aws-load-balancer-proxy-protocol" = "*"; + "service.beta.kubernetes.io/aws-load-balancer-target-group-attributes" = "proxy_protocol_v2.enabled=true,preserve_client_ip.enabled=true"; - "alb.ingress.kubernetes.io/listen-ports" = builtins.toJSON [{HTTP = 80;} {HTTPS = 443;}]; - #"alb.ingress.kubernetes.io/wafv2-acl-arn" = values.backend.wafARN; - "alb.ingress.kubernetes.io/healthcheck-path" = "${values.cardano-services.httpPrefix}/health"; - "alb.ingress.kubernetes.io/healthcheck-interval-seconds" = toString values.backend.albHealthcheck.interval; - "alb.ingress.kubernetes.io/healthcheck-timeout-seconds" = toString values.backend.albHealthcheck.timeout; - "alb.ingress.kubernetes.io/group.order" = toString values.cardano-services.ingresOrder; - } else { - "alb.ingress.kubernetes.io/actions.ssl-redirect" = builtins.toJSON { - Type = "redirect"; - RedirectConfig = { - Protocol = "HTTPS"; - Port = "443"; - StatusCode = "HTTP_301"; + "alb.ingress.kubernetes.io/listen-ports" = builtins.toJSON [{HTTP = 80;} {HTTPS = 443;}]; + #"alb.ingress.kubernetes.io/wafv2-acl-arn" = values.backend.wafARN; + "alb.ingress.kubernetes.io/healthcheck-path" = "${values.cardano-services.httpPrefix}/health"; + "alb.ingress.kubernetes.io/healthcheck-interval-seconds" = toString values.backend.albHealthcheck.interval; + "alb.ingress.kubernetes.io/healthcheck-timeout-seconds" = toString values.backend.albHealthcheck.timeout; + "alb.ingress.kubernetes.io/group.order" = toString values.cardano-services.ingresOrder; + } + else { + "alb.ingress.kubernetes.io/actions.ssl-redirect" = builtins.toJSON { + Type = "redirect"; + RedirectConfig = { + Protocol = "HTTPS"; + Port = "443"; + StatusCode = "HTTP_301"; + }; }; + "alb.ingress.kubernetes.io/listen-ports" = builtins.toJSON [{HTTP = 80;} {HTTPS = 443;}]; + "alb.ingress.kubernetes.io/target-type" = "ip"; + "alb.ingress.kubernetes.io/scheme" = "internet-facing"; + "alb.ingress.kubernetes.io/wafv2-acl-arn" = values.backend.wafARN; + "alb.ingress.kubernetes.io/healthcheck-path" = "${values.cardano-services.httpPrefix}/health"; + "alb.ingress.kubernetes.io/healthcheck-interval-seconds" = toString values.backend.albHealthcheck.interval; + "alb.ingress.kubernetes.io/healthcheck-timeout-seconds" = toString values.backend.albHealthcheck.timeout; + # Use latency routing policy + "external-dns.alpha.kubernetes.io/aws-region" = config.region; + "external-dns.alpha.kubernetes.io/set-identifier" = values.backend.dnsId; + "alb.ingress.kubernetes.io/group.name" = chart.namespace; + "alb.ingress.kubernetes.io/group.order" = toString values.cardano-services.ingresOrder; }; - "alb.ingress.kubernetes.io/listen-ports" = builtins.toJSON [{HTTP = 80;} {HTTPS = 443;}]; - "alb.ingress.kubernetes.io/target-type" = "ip"; - "alb.ingress.kubernetes.io/scheme" = "internet-facing"; - "alb.ingress.kubernetes.io/wafv2-acl-arn" = values.backend.wafARN; - "alb.ingress.kubernetes.io/healthcheck-path" = "${values.cardano-services.httpPrefix}/health"; - "alb.ingress.kubernetes.io/healthcheck-interval-seconds" = toString values.backend.albHealthcheck.interval; - "alb.ingress.kubernetes.io/healthcheck-timeout-seconds" = toString values.backend.albHealthcheck.timeout; - # Use latency routing policy - "external-dns.alpha.kubernetes.io/aws-region" = config.region; - "external-dns.alpha.kubernetes.io/set-identifier" = values.backend.dnsId; - "alb.ingress.kubernetes.io/group.name" = chart.namespace; - "alb.ingress.kubernetes.io/group.order" = toString values.cardano-services.ingresOrder; - }; }; spec = { ingressClassName = "alb"; From 1e28c8e72ca508948ee31b1085c9cccff109fc95 Mon Sep 17 00:00:00 2001 From: Gytis Ivaskevicius Date: Tue, 23 Jul 2024 13:19:18 +0300 Subject: [PATCH 3/6] chore: disable external-dns on ingressed used by accelerator --- nix/cardano-services/deployments/backend-ingress.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/cardano-services/deployments/backend-ingress.nix b/nix/cardano-services/deployments/backend-ingress.nix index 35265997167..e4d560c4ae7 100644 --- a/nix/cardano-services/deployments/backend-ingress.nix +++ b/nix/cardano-services/deployments/backend-ingress.nix @@ -41,6 +41,7 @@ "alb.ingress.kubernetes.io/healthcheck-interval-seconds" = toString values.backend.albHealthcheck.interval; "alb.ingress.kubernetes.io/healthcheck-timeout-seconds" = toString values.backend.albHealthcheck.timeout; "alb.ingress.kubernetes.io/group.order" = toString values.cardano-services.ingresOrder; + "external-dns.alpha.kubernetes.io/disabled" = "true"; } else { "alb.ingress.kubernetes.io/actions.ssl-redirect" = builtins.toJSON { From 6cfce526444fe91ed0d93b06aed56a8443c3827e Mon Sep 17 00:00:00 2001 From: Gytis Ivaskevicius Date: Tue, 23 Jul 2024 13:22:01 +0300 Subject: [PATCH 4/6] chore: configure dev-pre* envs to use accelerator --- nix/cardano-services/deployments/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nix/cardano-services/deployments/default.nix b/nix/cardano-services/deployments/default.nix index b37389b7b2b..23d150ef591 100644 --- a/nix/cardano-services/deployments/default.nix +++ b/nix/cardano-services/deployments/default.nix @@ -218,6 +218,7 @@ in }; values = { + useAccelerator = true; ws-server.enabled = true; stakepool.databaseName = "stakepoolv2"; cardano-services = { @@ -419,6 +420,7 @@ in }; values = { + useAccelerator = true; ws-server.enabled = true; stakepool.databaseName = "stakepoolv2"; backend.allowedOrigins = lib.concatStringsSep "," allowedOriginsDev; From d3cde185d72ba501e44c6da5133b6cca8b732fb3 Mon Sep 17 00:00:00 2001 From: Gytis Ivaskevicius Date: Tue, 23 Jul 2024 13:28:18 +0300 Subject: [PATCH 5/6] chore: destroy ops-preprod-1@eu-central-1 --- nix/cardano-services/deployments/default.nix | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/nix/cardano-services/deployments/default.nix b/nix/cardano-services/deployments/default.nix index 23d150ef591..133a71eec87 100644 --- a/nix/cardano-services/deployments/default.nix +++ b/nix/cardano-services/deployments/default.nix @@ -912,26 +912,6 @@ in }; }; - "ops-preprod-1@eu-central-1" = final: { - namespace = "ops-preprod-1"; - network = "preprod"; - context = "eks-admin"; - region = "eu-central-1"; - - providers = { - backend = { - enabled = true; - }; - }; - - values = { - useAccelerator = true; - cardano-services = { - ingresOrder = 99; - }; - }; - }; - "live-sanchonet@us-east-2@v1" = final: { namespace = "live-sanchonet"; name = "${final.namespace}-cardanojs-v1"; From 96a5a61c1d01a1dfc86d2fb4b2159418eacf4d09 Mon Sep 17 00:00:00 2001 From: Gytis Ivaskevicius Date: Tue, 23 Jul 2024 13:43:32 +0300 Subject: [PATCH 6/6] chore: update tf-outputs --- .../deployments/tf-outputs/lace-dev-us-east-1.json | 2 +- .../deployments/tf-outputs/lace-live-eu-central-1.json | 2 +- .../deployments/tf-outputs/lace-prod-us-east-2.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/nix/cardano-services/deployments/tf-outputs/lace-dev-us-east-1.json b/nix/cardano-services/deployments/tf-outputs/lace-dev-us-east-1.json index 5601ef458b9..0a41d977bad 100755 --- a/nix/cardano-services/deployments/tf-outputs/lace-dev-us-east-1.json +++ b/nix/cardano-services/deployments/tf-outputs/lace-dev-us-east-1.json @@ -1 +1 @@ -{"accelerators":{"ops-preprod-1":"arn:aws:globalaccelerator::926093910549:accelerator/3c1f8a14-aa0b-4114-b287-33ea56f0ddcb/listener/51576def/endpoint-group/7fde6f56d002"},"acm_arn":"arn:aws:acm:us-east-1:926093910549:certificate/f136a39b-3556-4ddf-85ac-ac5b7431dd34","acm_dapp_arn":"arn:aws:acm:us-east-1:926093910549:certificate/84cb06a8-cf8e-4485-b117-d0ff5c8304b0","waf_arn":"arn:aws:wafv2:us-east-1:926093910549:regional/webacl/rate-limit/d4216c0e-b464-4383-953f-3262f4cd3cb6"} \ No newline at end of file +{"accelerators":{"dev-preprod":"arn:aws:globalaccelerator::926093910549:accelerator/75241ddd-9ca6-4907-9fb4-ed6973e39563/listener/2e35ef83/endpoint-group/cd0c364c0002","dev-preview":"arn:aws:globalaccelerator::926093910549:accelerator/792713c0-b902-47c1-ba82-4d38a8e06ae9/listener/18235bfe/endpoint-group/c487a8452002","ops-preprod-1":"arn:aws:globalaccelerator::926093910549:accelerator/3c1f8a14-aa0b-4114-b287-33ea56f0ddcb/listener/51576def/endpoint-group/7fde6f56d002"},"acm_arn":"arn:aws:acm:us-east-1:926093910549:certificate/f136a39b-3556-4ddf-85ac-ac5b7431dd34","acm_dapp_arn":"arn:aws:acm:us-east-1:926093910549:certificate/84cb06a8-cf8e-4485-b117-d0ff5c8304b0","waf_arn":"arn:aws:wafv2:us-east-1:926093910549:regional/webacl/rate-limit/d4216c0e-b464-4383-953f-3262f4cd3cb6"} \ No newline at end of file diff --git a/nix/cardano-services/deployments/tf-outputs/lace-live-eu-central-1.json b/nix/cardano-services/deployments/tf-outputs/lace-live-eu-central-1.json index a1e7e553cd4..2575e357b74 100755 --- a/nix/cardano-services/deployments/tf-outputs/lace-live-eu-central-1.json +++ b/nix/cardano-services/deployments/tf-outputs/lace-live-eu-central-1.json @@ -1 +1 @@ -{"accelerators":{"ops-preprod-1":"arn:aws:globalaccelerator::926093910549:accelerator/3c1f8a14-aa0b-4114-b287-33ea56f0ddcb/listener/51576def/endpoint-group/82f43e613909"},"acm_arn":"arn:aws:acm:eu-central-1:926093910549:certificate/c0da842b-45c2-4306-ab09-139c47b437d0","acm_dapp_arn":"arn:aws:acm:eu-central-1:926093910549:certificate/07886406-64df-477c-b76b-f6a8d7c708ce","waf_arn":"arn:aws:wafv2:eu-central-1:926093910549:regional/webacl/rate-limit/bee0cf89-9c9a-4fb3-a609-88a3bb2edc7e"} \ No newline at end of file +{"accelerators":{"dev-preprod":"arn:aws:globalaccelerator::926093910549:accelerator/75241ddd-9ca6-4907-9fb4-ed6973e39563/listener/2e35ef83/endpoint-group/247304504909","dev-preview":"arn:aws:globalaccelerator::926093910549:accelerator/792713c0-b902-47c1-ba82-4d38a8e06ae9/listener/18235bfe/endpoint-group/a58684e05909","ops-preprod-1":"arn:aws:globalaccelerator::926093910549:accelerator/3c1f8a14-aa0b-4114-b287-33ea56f0ddcb/listener/51576def/endpoint-group/82f43e613909"},"acm_arn":"arn:aws:acm:eu-central-1:926093910549:certificate/c0da842b-45c2-4306-ab09-139c47b437d0","acm_dapp_arn":"arn:aws:acm:eu-central-1:926093910549:certificate/07886406-64df-477c-b76b-f6a8d7c708ce","waf_arn":"arn:aws:wafv2:eu-central-1:926093910549:regional/webacl/rate-limit/bee0cf89-9c9a-4fb3-a609-88a3bb2edc7e"} \ No newline at end of file diff --git a/nix/cardano-services/deployments/tf-outputs/lace-prod-us-east-2.json b/nix/cardano-services/deployments/tf-outputs/lace-prod-us-east-2.json index 55cdc2ab592..4e57d8fcd62 100755 --- a/nix/cardano-services/deployments/tf-outputs/lace-prod-us-east-2.json +++ b/nix/cardano-services/deployments/tf-outputs/lace-prod-us-east-2.json @@ -1 +1 @@ -{"acm_arn":"arn:aws:acm:us-east-2:926093910549:certificate/5ecbcb9a-222f-40ed-9067-05a70e416b30","acm_dapp_arn":"arn:aws:acm:us-east-2:926093910549:certificate/2f2912ea-f2eb-4fe7-adab-080fabcda0be","waf_arn":"arn:aws:wafv2:us-east-2:926093910549:regional/webacl/rate-limit/78a416a5-74d6-4215-95eb-575dd9146a6e"} \ No newline at end of file +{"accelerators":{"dev-preprod":"arn:aws:globalaccelerator::926093910549:accelerator/75241ddd-9ca6-4907-9fb4-ed6973e39563/listener/2e35ef83/endpoint-group/af197b8fb300","dev-preview":"arn:aws:globalaccelerator::926093910549:accelerator/792713c0-b902-47c1-ba82-4d38a8e06ae9/listener/18235bfe/endpoint-group/6868e24ff300","ops-preprod-1":"arn:aws:globalaccelerator::926093910549:accelerator/3c1f8a14-aa0b-4114-b287-33ea56f0ddcb/listener/51576def/endpoint-group/73ad3825b300"},"acm_arn":"arn:aws:acm:us-east-2:926093910549:certificate/5ecbcb9a-222f-40ed-9067-05a70e416b30","acm_dapp_arn":"arn:aws:acm:us-east-2:926093910549:certificate/2f2912ea-f2eb-4fe7-adab-080fabcda0be","waf_arn":"arn:aws:wafv2:us-east-2:926093910549:regional/webacl/rate-limit/78a416a5-74d6-4215-95eb-575dd9146a6e"} \ No newline at end of file