dbt-platform-helper 13.1.0__py3-none-any.whl → 15.16.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. dbt_platform_helper/COMMANDS.md +107 -27
  2. dbt_platform_helper/commands/application.py +5 -6
  3. dbt_platform_helper/commands/codebase.py +31 -10
  4. dbt_platform_helper/commands/conduit.py +3 -5
  5. dbt_platform_helper/commands/config.py +20 -311
  6. dbt_platform_helper/commands/copilot.py +18 -391
  7. dbt_platform_helper/commands/database.py +17 -9
  8. dbt_platform_helper/commands/environment.py +20 -14
  9. dbt_platform_helper/commands/generate.py +0 -3
  10. dbt_platform_helper/commands/internal.py +140 -0
  11. dbt_platform_helper/commands/notify.py +58 -78
  12. dbt_platform_helper/commands/pipeline.py +23 -19
  13. dbt_platform_helper/commands/secrets.py +39 -93
  14. dbt_platform_helper/commands/version.py +7 -12
  15. dbt_platform_helper/constants.py +52 -7
  16. dbt_platform_helper/domain/codebase.py +89 -39
  17. dbt_platform_helper/domain/conduit.py +335 -76
  18. dbt_platform_helper/domain/config.py +381 -0
  19. dbt_platform_helper/domain/copilot.py +398 -0
  20. dbt_platform_helper/domain/copilot_environment.py +8 -8
  21. dbt_platform_helper/domain/database_copy.py +2 -2
  22. dbt_platform_helper/domain/maintenance_page.py +254 -430
  23. dbt_platform_helper/domain/notify.py +64 -0
  24. dbt_platform_helper/domain/pipelines.py +43 -35
  25. dbt_platform_helper/domain/plans.py +41 -0
  26. dbt_platform_helper/domain/secrets.py +279 -0
  27. dbt_platform_helper/domain/service.py +570 -0
  28. dbt_platform_helper/domain/terraform_environment.py +14 -13
  29. dbt_platform_helper/domain/update_alb_rules.py +412 -0
  30. dbt_platform_helper/domain/versioning.py +249 -0
  31. dbt_platform_helper/{providers → entities}/platform_config_schema.py +75 -82
  32. dbt_platform_helper/entities/semantic_version.py +83 -0
  33. dbt_platform_helper/entities/service.py +339 -0
  34. dbt_platform_helper/platform_exception.py +4 -0
  35. dbt_platform_helper/providers/autoscaling.py +24 -0
  36. dbt_platform_helper/providers/aws/__init__.py +0 -0
  37. dbt_platform_helper/providers/aws/exceptions.py +70 -0
  38. dbt_platform_helper/providers/aws/interfaces.py +13 -0
  39. dbt_platform_helper/providers/aws/opensearch.py +23 -0
  40. dbt_platform_helper/providers/aws/redis.py +21 -0
  41. dbt_platform_helper/providers/aws/sso_auth.py +75 -0
  42. dbt_platform_helper/providers/cache.py +40 -4
  43. dbt_platform_helper/providers/cloudformation.py +1 -1
  44. dbt_platform_helper/providers/config.py +137 -19
  45. dbt_platform_helper/providers/config_validator.py +112 -51
  46. dbt_platform_helper/providers/copilot.py +24 -16
  47. dbt_platform_helper/providers/ecr.py +89 -7
  48. dbt_platform_helper/providers/ecs.py +228 -36
  49. dbt_platform_helper/providers/environment_variable.py +24 -0
  50. dbt_platform_helper/providers/files.py +1 -1
  51. dbt_platform_helper/providers/io.py +36 -4
  52. dbt_platform_helper/providers/kms.py +22 -0
  53. dbt_platform_helper/providers/load_balancers.py +402 -42
  54. dbt_platform_helper/providers/logs.py +72 -0
  55. dbt_platform_helper/providers/parameter_store.py +134 -0
  56. dbt_platform_helper/providers/s3.py +21 -0
  57. dbt_platform_helper/providers/schema_migrations/__init__.py +0 -0
  58. dbt_platform_helper/providers/schema_migrations/schema_v0_to_v1_migration.py +43 -0
  59. dbt_platform_helper/providers/schema_migrator.py +77 -0
  60. dbt_platform_helper/providers/secrets.py +5 -5
  61. dbt_platform_helper/providers/slack_channel_notifier.py +62 -0
  62. dbt_platform_helper/providers/terraform_manifest.py +121 -19
  63. dbt_platform_helper/providers/version.py +106 -23
  64. dbt_platform_helper/providers/version_status.py +27 -0
  65. dbt_platform_helper/providers/vpc.py +36 -5
  66. dbt_platform_helper/providers/yaml_file.py +58 -2
  67. dbt_platform_helper/templates/environment-pipelines/main.tf +4 -3
  68. dbt_platform_helper/templates/svc/overrides/cfn.patches.yml +5 -0
  69. dbt_platform_helper/utilities/decorators.py +103 -0
  70. dbt_platform_helper/utils/application.py +119 -22
  71. dbt_platform_helper/utils/aws.py +39 -150
  72. dbt_platform_helper/utils/deep_merge.py +10 -0
  73. dbt_platform_helper/utils/git.py +1 -14
  74. dbt_platform_helper/utils/validation.py +1 -1
  75. {dbt_platform_helper-13.1.0.dist-info → dbt_platform_helper-15.16.0.dist-info}/METADATA +11 -20
  76. dbt_platform_helper-15.16.0.dist-info/RECORD +118 -0
  77. {dbt_platform_helper-13.1.0.dist-info → dbt_platform_helper-15.16.0.dist-info}/WHEEL +1 -1
  78. platform_helper.py +3 -1
  79. terraform/elasticache-redis/plans.yml +85 -0
  80. terraform/opensearch/plans.yml +71 -0
  81. terraform/postgres/plans.yml +128 -0
  82. dbt_platform_helper/addon-plans.yml +0 -224
  83. dbt_platform_helper/providers/aws.py +0 -37
  84. dbt_platform_helper/providers/opensearch.py +0 -36
  85. dbt_platform_helper/providers/redis.py +0 -34
  86. dbt_platform_helper/providers/semantic_version.py +0 -126
  87. dbt_platform_helper/templates/svc/manifest-backend.yml +0 -69
  88. dbt_platform_helper/templates/svc/manifest-public.yml +0 -109
  89. dbt_platform_helper/utils/cloudfoundry.py +0 -14
  90. dbt_platform_helper/utils/files.py +0 -53
  91. dbt_platform_helper/utils/manifests.py +0 -18
  92. dbt_platform_helper/utils/versioning.py +0 -238
  93. dbt_platform_helper-13.1.0.dist-info/RECORD +0 -96
  94. {dbt_platform_helper-13.1.0.dist-info → dbt_platform_helper-15.16.0.dist-info}/entry_points.txt +0 -0
  95. {dbt_platform_helper-13.1.0.dist-info → dbt_platform_helper-15.16.0.dist-info/licenses}/LICENSE +0 -0
@@ -4,21 +4,20 @@ import time
4
4
  import urllib.parse
5
5
  from configparser import ConfigParser
6
6
  from pathlib import Path
7
- from typing import Tuple
8
7
 
9
8
  import boto3
10
9
  import botocore
11
10
  import botocore.exceptions
12
11
  import click
13
- import yaml
14
12
  from boto3 import Session
13
+ from botocore.exceptions import ClientError
15
14
 
16
15
  from dbt_platform_helper.constants import REFRESH_TOKEN_MESSAGE
17
16
  from dbt_platform_helper.platform_exception import PlatformException
18
- from dbt_platform_helper.providers.aws import CopilotCodebaseNotFoundException
19
- from dbt_platform_helper.providers.aws import ImageNotFoundException
20
- from dbt_platform_helper.providers.aws import LogGroupNotFoundException
21
- from dbt_platform_helper.providers.aws import RepositoryNotFoundException
17
+ from dbt_platform_helper.providers.aws.exceptions import (
18
+ CopilotCodebaseNotFoundException,
19
+ )
20
+ from dbt_platform_helper.providers.aws.exceptions import LogGroupNotFoundException
22
21
  from dbt_platform_helper.providers.validation import ValidationException
23
22
 
24
23
  SSM_BASE_PATH = "/copilot/{app}/{env}/secrets/"
@@ -159,7 +158,17 @@ def get_ssm_secrets(app, env, session=None, path=None):
159
158
  secrets = []
160
159
 
161
160
  while True:
162
- response = client.get_parameters_by_path(**params)
161
+ try:
162
+ response = client.get_parameters_by_path(**params)
163
+ except ClientError as e:
164
+ if e.response["Error"]["Code"] == "AccessDeniedException":
165
+ click.secho(
166
+ "Access denied on SSM, due to missing permissions. Please update your environment infrastructure.",
167
+ fg="magenta",
168
+ )
169
+ break
170
+ else:
171
+ raise e
163
172
 
164
173
  for secret in response["Parameters"]:
165
174
  secrets.append((secret["Name"], secret["Value"]))
@@ -203,24 +212,6 @@ def set_ssm_param(
203
212
  client.put_parameter(**parameter_args)
204
213
 
205
214
 
206
- def check_response(response):
207
- if response["ResponseMetadata"]["HTTPStatusCode"] != 200:
208
- click.secho(
209
- f"Unknown response error from AWS.\nStatus Code: {response['ResponseMetadata']['HTTPStatusCode']}",
210
- fg="red",
211
- )
212
- exit()
213
-
214
-
215
- def get_codestar_connection_arn(app_name):
216
- session = get_aws_session_or_abort()
217
- response = session.client("codestar-connections").list_connections()
218
-
219
- for connection in response["Connections"]:
220
- if connection["ConnectionName"] == app_name:
221
- return connection["ConnectionArn"]
222
-
223
-
224
215
  def get_account_details(sts_client=None):
225
216
  if not sts_client:
226
217
  sts_client = get_aws_session_or_abort().client("sts")
@@ -229,116 +220,8 @@ def get_account_details(sts_client=None):
229
220
  return response["Account"], response["UserId"]
230
221
 
231
222
 
232
- def get_public_repository_arn(repository_uri):
233
- session = get_aws_session_or_abort()
234
- response = session.client("ecr-public", region_name="us-east-1").describe_repositories()
235
- repository = [
236
- repo for repo in response["repositories"] if repo["repositoryUri"] == repository_uri
237
- ]
238
-
239
- return repository[0]["repositoryArn"] if repository else None
240
-
241
-
242
- def get_load_balancer_domain_and_configuration(
243
- project_session: Session, app: str, env: str, svc: str
244
- ) -> Tuple[str, dict]:
245
- response = get_load_balancer_configuration(project_session, app, env, svc)
246
-
247
- # Find the domain name
248
- with open(f"./copilot/{svc}/manifest.yml", "r") as fd:
249
- conf = yaml.safe_load(fd)
250
- if "environments" in conf:
251
- if env in conf["environments"]:
252
- for domain in conf["environments"].items():
253
- if domain[0] == env:
254
- if (
255
- domain[1] is None
256
- or domain[1]["http"] is None
257
- or domain[1]["http"]["alias"] is None
258
- ):
259
- click.secho(
260
- f"No domains found, please check the ./copilot/{svc}/manifest.yml file",
261
- fg="red",
262
- )
263
- exit()
264
- domain_name = domain[1]["http"]["alias"]
265
- else:
266
- click.secho(
267
- f"Environment {env} not found, please check the ./copilot/{svc}/manifest.yml file",
268
- fg="red",
269
- )
270
- exit()
271
-
272
- return domain_name, response["LoadBalancers"][0]
273
-
274
-
275
- def get_load_balancer_configuration(
276
- project_session: Session, app: str, env: str, svc: str
277
- ) -> list[Session]:
278
- proj_client = project_session.client("ecs")
279
-
280
- response = proj_client.list_clusters()
281
- check_response(response)
282
- no_items = True
283
- for cluster_arn in response["clusterArns"]:
284
- cluster_name = cluster_arn.split("/")[1]
285
- if cluster_name.startswith(f"{app}-{env}-Cluster"):
286
- no_items = False
287
- break
288
-
289
- if no_items:
290
- click.echo(
291
- click.style("There are no clusters for environment ", fg="red")
292
- + click.style(f"{env} ", fg="white", bold=True)
293
- + click.style("of application ", fg="red")
294
- + click.style(f"{app} ", fg="white", bold=True)
295
- + click.style("in AWS account ", fg="red")
296
- + click.style(f"{project_session.profile_name}", fg="white", bold=True),
297
- )
298
- exit()
299
-
300
- response = proj_client.list_services(cluster=cluster_name)
301
- check_response(response)
302
- no_items = True
303
- for service_arn in response["serviceArns"]:
304
- fully_qualified_service_name = service_arn.split("/")[2]
305
- if fully_qualified_service_name.startswith(f"{app}-{env}-{svc}-Service"):
306
- no_items = False
307
- break
308
-
309
- if no_items:
310
- click.echo(
311
- click.style("There are no services called ", fg="red")
312
- + click.style(f"{svc} ", fg="white", bold=True)
313
- + click.style("for environment ", fg="red")
314
- + click.style(f"{env} ", fg="white", bold=True)
315
- + click.style("of application ", fg="red")
316
- + click.style(f"{app} ", fg="white", bold=True)
317
- + click.style("in AWS account ", fg="red")
318
- + click.style(f"{project_session.profile_name}", fg="white", bold=True),
319
- )
320
- exit()
321
-
322
- elb_client = project_session.client("elbv2")
323
-
324
- elb_arn = elb_client.describe_target_groups(
325
- TargetGroupArns=[
326
- proj_client.describe_services(
327
- cluster=cluster_name,
328
- services=[
329
- fully_qualified_service_name,
330
- ],
331
- )["services"][0]["loadBalancers"][0]["targetGroupArn"],
332
- ],
333
- )["TargetGroups"][0]["LoadBalancerArns"][0]
334
-
335
- response = elb_client.describe_load_balancers(LoadBalancerArns=[elb_arn])
336
- check_response(response)
337
- return response
338
-
339
-
340
223
  def get_postgres_connection_data_updated_with_master_secret(session, parameter_name, secret_arn):
341
- # Todo: This is pretty much the same as dbt_platform_helper.providers.secrets.Secrets.get_postgres_connection_data_updated_with_master_secret
224
+ # TODO: DBTP-1968: This is pretty much the same as dbt_platform_helper.providers.secrets.Secrets.get_postgres_connection_data_updated_with_master_secret
342
225
  ssm_client = session.client("ssm")
343
226
  secrets_manager_client = session.client("secretsmanager")
344
227
  response = ssm_client.get_parameter(Name=parameter_name, WithDecryption=True)
@@ -387,10 +270,10 @@ def start_pipeline_and_return_execution_id(codepipeline_client, build_options):
387
270
  return response["pipelineExecutionId"]
388
271
 
389
272
 
390
- # Todo: This should probably be in the AWS Copilot provider
273
+ # TODO: DBTP-1888: This should probably be in the AWS Copilot provider
391
274
  def check_codebase_exists(session: Session, application, codebase: str):
392
275
  try:
393
- # Todo: Can this leverage dbt_platform_helper.providers.secrets.Secrets.get_connection_secret_arn?
276
+ # TODO: DBTP-1968: Can this leverage dbt_platform_helper.providers.secrets.Secrets.get_connection_secret_arn?
394
277
  ssm_client = session.client("ssm")
395
278
  json.loads(
396
279
  ssm_client.get_parameter(
@@ -406,20 +289,6 @@ def check_codebase_exists(session: Session, application, codebase: str):
406
289
  raise CopilotCodebaseNotFoundException(codebase)
407
290
 
408
291
 
409
- def check_image_exists(session, application, codebase, commit):
410
- ecr_client = session.client("ecr")
411
- repository = f"{application.name}/{codebase}"
412
- try:
413
- ecr_client.describe_images(
414
- repositoryName=repository,
415
- imageIds=[{"imageTag": f"commit-{commit}"}],
416
- )
417
- except ecr_client.exceptions.ImageNotFoundException:
418
- raise ImageNotFoundException(commit)
419
- except ecr_client.exceptions.RepositoryNotFoundException:
420
- raise RepositoryNotFoundException(repository)
421
-
422
-
423
292
  def get_build_url_from_arn(build_arn: str) -> str:
424
293
  _, _, _, region, account_id, project_name, build_id = build_arn.split(":")
425
294
  project_name = project_name.removeprefix("build/")
@@ -484,3 +353,23 @@ def wait_for_log_group_to_exist(log_client, log_group_name, attempts=30):
484
353
 
485
354
  if not log_group_exists:
486
355
  raise LogGroupNotFoundException(log_group_name)
356
+
357
+
358
+ def get_image_build_project(codebuild_client, application, codebase):
359
+ project_name = f"{application}-{codebase}-codebase-image-build"
360
+ response = codebuild_client.batch_get_projects(names=[project_name])
361
+
362
+ if bool(response.get("projects")):
363
+ return project_name
364
+ else:
365
+ return f"{application}-{codebase}-codebase-pipeline-image-build"
366
+
367
+
368
+ def get_manual_release_pipeline(codepipeline_client, application, codebase):
369
+ pipeline_name = f"{application}-{codebase}-manual-release"
370
+ try:
371
+ codepipeline_client.get_pipeline(name=pipeline_name)
372
+ return pipeline_name
373
+ except ClientError as e:
374
+ if e.response["Error"]["Code"] == "PipelineNotFoundException":
375
+ return f"{pipeline_name}-pipeline"
@@ -0,0 +1,10 @@
1
+ def deep_merge(base, override):
2
+ result = base.copy()
3
+
4
+ for k, v in override.items():
5
+ if k in result and isinstance(result[k], dict) and isinstance(v, dict):
6
+ result[k] = deep_merge(result[k], v)
7
+ else:
8
+ result[k] = v
9
+
10
+ return result
@@ -2,10 +2,6 @@ import re
2
2
  import subprocess
3
3
 
4
4
 
5
- class CommitNotFoundException(Exception):
6
- pass
7
-
8
-
9
5
  def git_remote():
10
6
  git_repo = subprocess.run(
11
7
  ["git", "remote", "get-url", "origin"], capture_output=True, text=True
@@ -17,13 +13,4 @@ def extract_repository_name(repository_url):
17
13
  if not repository_url:
18
14
  return
19
15
 
20
- return re.search(r"([^/:]*/[^/]*)\.git", repository_url).group(1)
21
-
22
-
23
- def check_if_commit_exists(commit):
24
- branches_containing_commit = subprocess.run(
25
- ["git", "branch", "-r", "--contains", f"{commit}"], capture_output=True, text=True
26
- )
27
-
28
- if branches_containing_commit.stderr:
29
- raise CommitNotFoundException()
16
+ return re.search(r"([^/:]*/[^/]*?)(?:\.git)?$", repository_url).group(1)
@@ -1,7 +1,7 @@
1
1
  from schema import SchemaError
2
2
 
3
+ from dbt_platform_helper.entities.platform_config_schema import PlatformConfigSchema
3
4
  from dbt_platform_helper.providers.config_validator import ConfigValidator
4
- from dbt_platform_helper.providers.platform_config_schema import PlatformConfigSchema
5
5
 
6
6
 
7
7
  def validate_addons(addons: dict):
@@ -1,40 +1,31 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: dbt-platform-helper
3
- Version: 13.1.0
3
+ Version: 15.16.0
4
4
  Summary: Set of tools to help transfer applications/services from GOV.UK PaaS to DBT PaaS augmenting AWS Copilot.
5
5
  License: MIT
6
+ License-File: LICENSE
6
7
  Author: Department for Business and Trade Platform Team
7
8
  Author-email: sre-team@digital.trade.gov.uk
8
- Requires-Python: >=3.9,<4.0
9
+ Requires-Python: >3.9.1,<4.0
9
10
  Classifier: License :: OSI Approved :: MIT License
10
11
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.9
12
12
  Classifier: Programming Language :: Python :: 3.10
13
13
  Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
- Requires-Dist: Jinja2 (==3.1.5)
17
- Requires-Dist: PyYAML (==6.0.1)
18
- Requires-Dist: aiohttp (>=3.8.4,<4.0.0)
19
- Requires-Dist: boto3 (>=1.28.24,<2.0.0)
20
- Requires-Dist: boto3-stubs (>=1.26.148,<2.0.0)
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Requires-Dist: Jinja2 (==3.1.6)
18
+ Requires-Dist: boto3 (>=1.35.2,<2.0.0)
21
19
  Requires-Dist: botocore (>=1.34.85,<2.0.0)
22
- Requires-Dist: certifi (>=2023.7.22,<2025.0.0)
23
- Requires-Dist: cfn-flip (==1.3.0)
24
- Requires-Dist: cfn-lint (>=1.4.2,<2.0.0)
25
- Requires-Dist: checkov (>=3.1.67,<4.0.0)
20
+ Requires-Dist: cfn-flip (>=1.3.0,<2.0.0)
26
21
  Requires-Dist: click (>=8.1.3,<9.0.0)
27
- Requires-Dist: cloudfoundry-client (==1.35.2)
28
- Requires-Dist: cryptography (>=41.0.3,<44.0.0)
29
- Requires-Dist: jinja2-simple-tags (>=0.5.0,<0.6.0)
30
- Requires-Dist: jsonschema (>=4.17.0,<4.18.0)
31
- Requires-Dist: mypy-boto3-codebuild (>=1.26.0.post1,<2.0.0)
22
+ Requires-Dist: jinja2-simple-tags (>=0.5,<0.7)
32
23
  Requires-Dist: prettytable (>=3.9.0,<4.0.0)
24
+ Requires-Dist: psycopg2-binary (>=2.9.9,<3.0.0)
25
+ Requires-Dist: pydantic (>=2.11.7,<3.0.0)
33
26
  Requires-Dist: requests (>=2.31.0,<3.0.0)
34
27
  Requires-Dist: schema (==0.7.5)
35
- Requires-Dist: semver (>=3.0.2,<4.0.0)
36
28
  Requires-Dist: slack-sdk (>=3.27.1,<4.0.0)
37
- Requires-Dist: tomlkit (>=0.12.2,<0.13.0)
38
29
  Requires-Dist: yamllint (>=1.35.1,<2.0.0)
39
30
  Description-Content-Type: text/markdown
40
31
 
@@ -0,0 +1,118 @@
1
+ dbt_platform_helper/COMMANDS.md,sha256=RdSHUelcM4TsBpVQJQ5WYcVhYMDjOaVJekWQLcH7v5Y,24617
2
+ dbt_platform_helper/README.md,sha256=B0qN2_u_ASqqgkGDWY2iwNGZt_9tUgMb9XqtaTuzYjw,1530
3
+ dbt_platform_helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ dbt_platform_helper/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ dbt_platform_helper/commands/application.py,sha256=GefE6MHuIdERUvd39K_3a-2v6VZUFQIS6F1U0GMXdAc,10156
6
+ dbt_platform_helper/commands/codebase.py,sha256=oNlZcP2w3XE5YP-JVl0rdqoJuXUrfe1ELZ5xAdgPvBk,3166
7
+ dbt_platform_helper/commands/conduit.py,sha256=GVDX2QjeGCxgN0otWOPivo0jyoE0CjnBz3VCDx9s-po,2313
8
+ dbt_platform_helper/commands/config.py,sha256=4pgGgaH7Mp93UWdVoqZDc2eAmjsP7Yw1jjsviNWXsks,1442
9
+ dbt_platform_helper/commands/copilot.py,sha256=L9UUuqD62q0aFrTTEUla3A1WJBz-vFBfVi6p455TTgQ,1458
10
+ dbt_platform_helper/commands/database.py,sha256=2RJZEzaSqcNtDG1M2mZw-nB6agAd3GNAJsg2pjFF7vc,4407
11
+ dbt_platform_helper/commands/environment.py,sha256=y6RYaYPIeeAAac0c34sdhCT3YFcN4p_IeC4AgJ4X4LY,4059
12
+ dbt_platform_helper/commands/generate.py,sha256=Ix3hkfE6xvtTupfszcLB5HQBlN9aAAfDUihTQLtLNZE,588
13
+ dbt_platform_helper/commands/internal.py,sha256=F-Am1v7V4GGJIJAho68-LKWRuSuyolnkLVrUyOcoIuI,5042
14
+ dbt_platform_helper/commands/notify.py,sha256=DMXA0AHot6-7CMzmY0PXPMMBVnLgvQgXr6np6OnSQh4,3401
15
+ dbt_platform_helper/commands/pipeline.py,sha256=16h4OioqP-0IhW5fITyjKOwFC8FzY5ex_b3L0y_yPrw,2944
16
+ dbt_platform_helper/commands/secrets.py,sha256=A_mKgJhIrDCrMB7bFq008Btbj2gOUFXCEtfFrHDhPVk,2244
17
+ dbt_platform_helper/commands/version.py,sha256=obKl3D5noQfIN4jyM_Y1QD5yJ5jzsgWF0iThWtRJrZ8,1118
18
+ dbt_platform_helper/constants.py,sha256=zkemUFHYAQCteVwCxhMIPtPiAUFO9tfnnuRlLZk6KEs,3019
19
+ dbt_platform_helper/default-extensions.yml,sha256=SU1ZitskbuEBpvE7efc3s56eAUF11j70brhj_XrNMMo,493
20
+ dbt_platform_helper/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ dbt_platform_helper/domain/codebase.py,sha256=2hJoBiDB2ciOudT_YUR44XV0ZQPWUJld_UIuds4XOt8,12481
22
+ dbt_platform_helper/domain/conduit.py,sha256=AlGk4V4GhJ-d-MKTSwjBAeqjjakb6qesuSqB561Btwo,13042
23
+ dbt_platform_helper/domain/config.py,sha256=tLDX3oDMicduN0MH3RZxiK7aBG1U1-BXyG8y6U1pbqI,14877
24
+ dbt_platform_helper/domain/copilot.py,sha256=g8W2LaskyhOvtNoCoNbwucGTrfdAzj-AJ0J98tgLbhA,15138
25
+ dbt_platform_helper/domain/copilot_environment.py,sha256=fL3XJCOfO0BJRCrCoBPFCcshrQoX1FeSYNTziOEaH4A,9093
26
+ dbt_platform_helper/domain/database_copy.py,sha256=4A84xqj3c_VjYlXb81B8Kt8us8IcCQVVF6GyPAAmwyo,9638
27
+ dbt_platform_helper/domain/maintenance_page.py,sha256=FtDQ43Wye_z8MlkT7pGButwHRPFJX9nfVOPr6BDRfJk,15958
28
+ dbt_platform_helper/domain/notify.py,sha256=_BWj5znDWtrSdJ5xzDBgnao4ukliBA5wiUZGobIDyiI,1894
29
+ dbt_platform_helper/domain/pipelines.py,sha256=QIPjCwhylKZ08Orw_IjTRoVNlSaXV0e1Xjpfc7rBMRE,6841
30
+ dbt_platform_helper/domain/plans.py,sha256=X5-jKGiJDVWn0CRH1k5aV74fTH0E41HqFQcCo5kB4hI,1160
31
+ dbt_platform_helper/domain/secrets.py,sha256=NyEsJcCg6vDcpblUp9ijsSC8ySy4O0f37KkRPZH2EKk,11637
32
+ dbt_platform_helper/domain/service.py,sha256=ev1I_QTFUL_HCa9Vwxf0UoSsIiVM-WRb8LXYfsn8cJE,26747
33
+ dbt_platform_helper/domain/terraform_environment.py,sha256=kolfakum9DvnOC5xcLMfZSxvXrqc1AsS5fyP0qagpGY,1663
34
+ dbt_platform_helper/domain/update_alb_rules.py,sha256=hOg0qJrQVXI5NZl8UdVq3S46r0yAB3Wn-sufXr116ms,17366
35
+ dbt_platform_helper/domain/versioning.py,sha256=dl8iD-I3DnHGvPrrr1mxrqwfgxA4oO9j2OATA-GgZfc,10450
36
+ dbt_platform_helper/entities/platform_config_schema.py,sha256=OJlPMBkV2h8HbxSui-c6CXoqAAg2UN-V2Lq5qn5SwxY,27533
37
+ dbt_platform_helper/entities/semantic_version.py,sha256=9vV44HoPltkWPq9_1C5SbfvcVRlXFi1aUftHsYgqEcA,2735
38
+ dbt_platform_helper/entities/service.py,sha256=B7yNjcRkKLG3tcZiAP0CcfdcKCVsZxmWyt2Tk4CNkME,14016
39
+ dbt_platform_helper/jinja2_tags.py,sha256=hKG6RS3zlxJHQ-Op9r2U2-MhWp4s3lZir4Ihe24ApJ0,540
40
+ dbt_platform_helper/platform_exception.py,sha256=HGfCYRD20REsynqMKmyZndTfdkMd5dLSIEB2qGGCeP8,244
41
+ dbt_platform_helper/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ dbt_platform_helper/providers/autoscaling.py,sha256=ZUBFRJ1ed7N_pckXb0rvvn5ZvylEUt1bf05Pkgr9s_s,824
43
+ dbt_platform_helper/providers/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ dbt_platform_helper/providers/aws/exceptions.py,sha256=88EA__k0Rg3PrHw_Oq2ZiPfA34vcQO_mqN2Cbg2I7s0,2528
45
+ dbt_platform_helper/providers/aws/interfaces.py,sha256=0JFggcUTJ8zERdxNVVpIiKvaaZeT2c-VECDG--MOi8E,285
46
+ dbt_platform_helper/providers/aws/opensearch.py,sha256=Qne2SoPllmacVSc7AxtjBlEbSBsRMbR_ySEkEymSF9k,581
47
+ dbt_platform_helper/providers/aws/redis.py,sha256=i3Kb00_BdqssjQg1wgZ-8GRXcEWQiORWnIEq6qkAXjQ,551
48
+ dbt_platform_helper/providers/aws/sso_auth.py,sha256=fl1WSmhpyt8WZAe6EY5WDA33nEPrIIQzO-DVuWlFjsA,2844
49
+ dbt_platform_helper/providers/cache.py,sha256=1hEwp0y9WYbEfgsp-RU9MyzIgCt1-4BxApgd_0uVweE,3615
50
+ dbt_platform_helper/providers/cloudformation.py,sha256=syMH6xc-ALRbsYQvlw9RcjX7c1MufFzwEdEzp_ucWig,5359
51
+ dbt_platform_helper/providers/config.py,sha256=8MDDIx4WreVFvDGPW5or2CcM19B_pYlzppGz42tydfw,10461
52
+ dbt_platform_helper/providers/config_validator.py,sha256=LVuELR3L0xxh1gHgXDmM5XZwpKJxhLzmA_43nEWOQu8,14170
53
+ dbt_platform_helper/providers/copilot.py,sha256=voFVGhvtOElulx6Cgd1KQGkybrg8v4oGkJTr_xRpF18,5582
54
+ dbt_platform_helper/providers/ecr.py,sha256=eYXSY1-pFN6F3Es1WSZgv3dmvX2oD-baqhHDO-QzgVg,4382
55
+ dbt_platform_helper/providers/ecs.py,sha256=H_Pq7_mgSKsTbW3OS8-mPLPDmFTDOPL91GAcIhKoEmE,10974
56
+ dbt_platform_helper/providers/environment_variable.py,sha256=PopMLKnWcoObQrgg7xSEb-pzVT54_QGFsb_HtL_9YU8,794
57
+ dbt_platform_helper/providers/files.py,sha256=sH02Ka_WaDBFtN4Y0i9kuo9YQoKn2rhUy0Dn8LPMrEw,857
58
+ dbt_platform_helper/providers/io.py,sha256=Xal6Moq-Lg9x2udW_hLFynondMYM3GTp-WQkTPAkres,1997
59
+ dbt_platform_helper/providers/kms.py,sha256=JR2EU3icXePoJCtr7QnqDPj1wWbyn5Uf9CRFq3_4lRs,647
60
+ dbt_platform_helper/providers/load_balancers.py,sha256=E6XWs6D3Y0AJjGwH0kFMbhhs9sI48p5m3BIF2dXF6rs,15792
61
+ dbt_platform_helper/providers/logs.py,sha256=C4lEnct-dgC6tdZGNdC8S0To8W0BErWqBX5fztjy1Zw,2684
62
+ dbt_platform_helper/providers/parameter_store.py,sha256=q-BZKMQIqerea_lB-jZtycHwweSzehx7tca8Gv9IfFM,4238
63
+ dbt_platform_helper/providers/s3.py,sha256=A-0sfQuHBbfRJ1txNQ_NXTrqNRrvw4LTZVaxK08q8I4,661
64
+ dbt_platform_helper/providers/schema_migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
+ dbt_platform_helper/providers/schema_migrations/schema_v0_to_v1_migration.py,sha256=dplbvEAc8l8F4dEAy3JwLP1Phjkt4QVuQYNX_EKe_Ls,2036
66
+ dbt_platform_helper/providers/schema_migrator.py,sha256=qk14k3hMz1av9VrxHyJw2OKJLQnCBv_ugOoxZr3tFXQ,2854
67
+ dbt_platform_helper/providers/secrets.py,sha256=mOTIrcRRxxV2tS40U8onAjWekfPS3NzCvvyCMjr_yrU,5327
68
+ dbt_platform_helper/providers/slack_channel_notifier.py,sha256=G8etEcaBQSNHg8BnyC5UPv6l3vUB14cYWjcaAQksaEk,2135
69
+ dbt_platform_helper/providers/terraform_manifest.py,sha256=4dH1AATmuAVMY-RHX8b9PI1uYRSWYw7h7jkuJAeZO6g,14160
70
+ dbt_platform_helper/providers/validation.py,sha256=i2g-Mrd4hy_fGIfGa6ZQy4vTJ40OM44Fe_XpEifGWxs,126
71
+ dbt_platform_helper/providers/version.py,sha256=QNGrV5nyJi0JysXowYUU4OrXGDn27WmFezlV8benpdY,4251
72
+ dbt_platform_helper/providers/version_status.py,sha256=qafnhZrEc9k1cvXJpvJhkGj6WtkzcsoQhqS_Y6JXy48,929
73
+ dbt_platform_helper/providers/vpc.py,sha256=KdgwyHv2RwNpq16Sa2FtWm7DMJlTNmsPbXkbMNMYiQo,4082
74
+ dbt_platform_helper/providers/yaml_file.py,sha256=zd0j7bDow4xI0dPGugiT11xa1reSc9xkf1ms0ZKLlCU,4300
75
+ dbt_platform_helper/templates/.copilot/config.yml,sha256=J_bA9sCtBdCPBRImpCBRnYvhQd4vpLYIXIU-lq9vbkA,158
76
+ dbt_platform_helper/templates/.copilot/image_build_run.sh,sha256=adYucYXEB-kAgZNjTQo0T6EIAY8sh_xCEvVhWKKQ8mw,164
77
+ dbt_platform_helper/templates/.copilot/phases/build.sh,sha256=umKXePcRvx4XyrRY0fAWIyYFtNjqBI2L8vIJk-V7C60,121
78
+ dbt_platform_helper/templates/.copilot/phases/install.sh,sha256=pNkEnZBnM4-n1MBzLdPC86YG4Sgj3X7yeQt-swwCunc,123
79
+ dbt_platform_helper/templates/.copilot/phases/post_build.sh,sha256=qdfaViaaPpnjHxI2Uap9DffM0OcV-FYXk7slT51b_vU,126
80
+ dbt_platform_helper/templates/.copilot/phases/pre_build.sh,sha256=rzyjyf7Y7LHH7h-Vv_J--QaR7-dTS_5G-R4iE_9mpQI,836
81
+ dbt_platform_helper/templates/COMMANDS.md.jinja,sha256=8ja7ZGuy1lCP_SWlYrWie---oeO5ucyxfLJkkgwEJ_M,1138
82
+ dbt_platform_helper/templates/addon-instructions.txt,sha256=Dhd1xDbFKnX7xjfCz0W52P6PqPI9M8dyoxoSHAY2fao,597
83
+ dbt_platform_helper/templates/addons/README.md,sha256=UdVydY2ocm1OLKecZ8MAiXet3rKsMiq0PpBrmi0Xrns,412
84
+ dbt_platform_helper/templates/addons/svc/appconfig-ipfilter.yml,sha256=nBIXV4um4jIvXs3Q5QycHqVpJODK5yg_M-xJT6AOBKE,977
85
+ dbt_platform_helper/templates/addons/svc/prometheus-policy.yml,sha256=PwkGwri6IUuullXjEu17RZWYdoJR45Eb7BdUb2_AdOA,1074
86
+ dbt_platform_helper/templates/addons/svc/s3-cross-account-policy.yml,sha256=tZQ5XNIMPxv55Ilu0fIcc1I57dzDaQIQImhfsrijpQY,2211
87
+ dbt_platform_helper/templates/addons/svc/s3-policy.yml,sha256=jwTpFNmm8CaP0c6VXXBJvEm_YLA17Nf-S1xyU1ahLJ8,2164
88
+ dbt_platform_helper/templates/addons/svc/subscription-filter.yml,sha256=irD0AjPc38xTRzEday2Ko-KrjK4hPlyLxUFvUITjMkU,914
89
+ dbt_platform_helper/templates/ci-codebuild-role-policy.json,sha256=hNE-wGrraWxsJAWE9ahtL7Bkw7PEz-CXBQnM3DR70vQ,1836
90
+ dbt_platform_helper/templates/create-codebuild-role.json,sha256=THJgIKi8rWwDzhg5ZxT8a0UkXKBfXZ-zsXm8St_ixPg,197
91
+ dbt_platform_helper/templates/custom-codebuild-role-policy.json,sha256=8xyCofilPhV1Yjt3OnQLcI2kZ35mk2c07GcqYrKxuoI,1180
92
+ dbt_platform_helper/templates/env/manifest.yml,sha256=VCEj_y3jdfnPYi6gmyrwiEqzHYjpaJDANbvswmkiLA0,802
93
+ dbt_platform_helper/templates/env/terraform-overrides/cfn.patches.yml,sha256=cFlg69fvi9kzpz13ZAeY1asseZ6TuUex-6s76jG3oL4,259
94
+ dbt_platform_helper/templates/environment-pipelines/main.tf,sha256=ZjYx-gvXuQ5lOgg3imJj6NmMKpxdjxrKgGK0VYu_VLE,1883
95
+ dbt_platform_helper/templates/svc/maintenance_pages/default.html,sha256=OTZ-qwwSXu7PFbsgp4kppdm1lsg_iHK7FCFqhPnvrEs,741
96
+ dbt_platform_helper/templates/svc/maintenance_pages/dmas-migration.html,sha256=qvI6tHuI0UQbMBCuvPgK1a_zLANB6w7KVo9N5d8r-i0,829
97
+ dbt_platform_helper/templates/svc/maintenance_pages/migration.html,sha256=GiQsOiuaMFb7jG5_wU3V7BMcByHBl9fOBgrNf8quYlw,783
98
+ dbt_platform_helper/templates/svc/overrides/cfn.patches.yml,sha256=EdzEo-utytsye4Ck3bVSK8SuKdwUhX7HtQGdvTvHfps,824
99
+ dbt_platform_helper/utilities/decorators.py,sha256=rS6ohsuo0bc6fkZP98Qwaeh0c_v2MDqn9hCvqfoz2w8,3548
100
+ dbt_platform_helper/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ dbt_platform_helper/utils/application.py,sha256=DGRSuF0eYs8sf5e6thb7yXFCaQZCeVpB0vODPAVQc7w,8416
102
+ dbt_platform_helper/utils/arn_parser.py,sha256=BaXzIxSOLdFmP_IfAxRq-0j-0Re1iCN7L4j2Zi5-CRQ,1304
103
+ dbt_platform_helper/utils/aws.py,sha256=5jjIx7Qo3GO4cUe_J9uLLr4lMF8ZTplyFABZoVW8lPU,12789
104
+ dbt_platform_helper/utils/click.py,sha256=Fx4y4bbve1zypvog_sgK7tJtCocmzheoEFLBRv1lfdM,2943
105
+ dbt_platform_helper/utils/deep_merge.py,sha256=2N0Gg2SsFHzwyNNLFm2Q8d4C9PPFsDsaWYzjDO1OpaI,280
106
+ dbt_platform_helper/utils/git.py,sha256=oRgp2xNTbyANoowXLdV4mUjaB8tpwItxVVCEepJ6G8E,391
107
+ dbt_platform_helper/utils/messages.py,sha256=nWA7BWLb7ND0WH5TejDN4OQUJSKYBxU4tyCzteCrfT0,142
108
+ dbt_platform_helper/utils/template.py,sha256=g-Db-0I6a6diOHkgK1nYA0IxJSO4TRrjqOvlyeOR32o,950
109
+ dbt_platform_helper/utils/validation.py,sha256=W5jKC2zp5Q7cJ0PT57GB-s9FkJXrNt1jmWojXRFymcY,1187
110
+ platform_helper.py,sha256=JKfXj2lptIc2CRHxo8u79kDKQH_IRV3jwPaL8T-1aAs,2052
111
+ terraform/elasticache-redis/plans.yml,sha256=efJfkLuLC_5TwhLb9DalKHOuZFO79y6iei6Dg_tqKjI,1831
112
+ terraform/opensearch/plans.yml,sha256=lQbUSNMGfvUeDMcGx8mSwzGQhMJU3EZ4J4tPzPKaq6c,1471
113
+ terraform/postgres/plans.yml,sha256=plwCklW1VB_tNJFyUduRMZx9UANgiWH_7TGLWUaUEus,2553
114
+ dbt_platform_helper-15.16.0.dist-info/METADATA,sha256=EMaT0-gjUxfg_lnAlA2PoWtFFJe37Z6akVz08RIimMA,2802
115
+ dbt_platform_helper-15.16.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
116
+ dbt_platform_helper-15.16.0.dist-info/entry_points.txt,sha256=QhbY8F434A-onsg0-FsdMd2U6HKh6Q7yCFFZrGUh5-M,67
117
+ dbt_platform_helper-15.16.0.dist-info/licenses/LICENSE,sha256=dP79lN73--7LMApnankTGLqDbImXg8iYFqWgnExGkGk,1090
118
+ dbt_platform_helper-15.16.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.1
2
+ Generator: poetry-core 2.2.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
platform_helper.py CHANGED
@@ -12,6 +12,7 @@ from dbt_platform_helper.commands.copilot import copilot as copilot_commands
12
12
  from dbt_platform_helper.commands.database import database as database_commands
13
13
  from dbt_platform_helper.commands.environment import environment as environment_commands
14
14
  from dbt_platform_helper.commands.generate import generate as generate_commands
15
+ from dbt_platform_helper.commands.internal import internal as internal_commands
15
16
  from dbt_platform_helper.commands.notify import notify as notify_commands
16
17
  from dbt_platform_helper.commands.pipeline import pipeline as pipeline_commands
17
18
  from dbt_platform_helper.commands.secrets import secrets as secrets_commands
@@ -35,6 +36,7 @@ platform_helper.add_command(config_commands)
35
36
  platform_helper.add_command(copilot_commands)
36
37
  platform_helper.add_command(environment_commands)
37
38
  platform_helper.add_command(generate_commands)
39
+ platform_helper.add_command(internal_commands)
38
40
  platform_helper.add_command(pipeline_commands)
39
41
  platform_helper.add_command(secrets_commands)
40
42
  platform_helper.add_command(notify_commands)
@@ -42,4 +44,4 @@ platform_helper.add_command(database_commands)
42
44
  platform_helper.add_command(version_commands)
43
45
 
44
46
  if __name__ == "__main__":
45
- platform_helper()
47
+ platform_helper(auto_envvar_prefix="DBT_PLATFORM")
@@ -0,0 +1,85 @@
1
+ # t-shirt sizes for ElastiCache Redis
2
+
3
+ # 0.5GB RAM, single node, no failover.
4
+ micro:
5
+ replicas: 0
6
+ instance: cache.t4g.micro
7
+ automatic_failover_enabled: false
8
+ multi_az_enabled: false
9
+
10
+ # 0.5GB RAM, highly-available.
11
+ micro-ha:
12
+ replicas: 2
13
+ instance: cache.t4g.micro
14
+ automatic_failover_enabled: true
15
+ multi_az_enabled: true
16
+
17
+ # 1.37GB RAM, single node, no failover.
18
+ tiny:
19
+ replicas: 0
20
+ instance: cache.t4g.small
21
+ automatic_failover_enabled: false
22
+ multi_az_enabled: false
23
+
24
+ # 1.37GB RAM, highly-available
25
+ tiny-ha:
26
+ replicas: 2
27
+ instance: cache.t4g.small
28
+ automatic_failover_enabled: true
29
+ multi_az_enabled: true
30
+
31
+ # 3.09GB RAM, single node, no failover.
32
+ small:
33
+ replicas: 0
34
+ instance: cache.t4g.medium
35
+ automatic_failover_enabled: false
36
+ multi_az_enabled: false
37
+
38
+ # 3.09GB RAM, highly-available
39
+ small-ha:
40
+ replicas: 2
41
+ instance: cache.t4g.medium
42
+ automatic_failover_enabled: true
43
+ multi_az_enabled: true
44
+
45
+ # 6.38GB RAM, single node, no failover.
46
+ medium:
47
+ replicas: 0
48
+ instance: cache.m6g.large
49
+ automatic_failover_enabled: false
50
+ multi_az_enabled: false
51
+
52
+ # 6.38GB RAM, highly-available
53
+ medium-ha:
54
+ replicas: 2
55
+ instance: 'cache.m6g.large'
56
+ automatic_failover_enabled: true
57
+ multi_az_enabled: true
58
+
59
+ # 12.93GB RAM, single node, no failover.
60
+ large:
61
+ replicas: 0
62
+ instance: cache.m6g.xlarge
63
+ automatic_failover_enabled: false
64
+ multi_az_enabled: false
65
+
66
+ # 12.93GB RAM, highly-available
67
+ large-ha:
68
+ replicas: 2
69
+ instance: cache.m6g.xlarge
70
+ automatic_failover_enabled: true
71
+ multi_az_enabled: true
72
+
73
+ # 26.04GB RAM, single node, no failover.
74
+ x-large:
75
+ replicas: 0
76
+ instance: cache.m6g.2xlarge
77
+ automatic_failover_enabled: false
78
+ multi_az_enabled: false
79
+
80
+ # 26.04GB RAM, highly-available
81
+ x-large-ha:
82
+ replicas: 2
83
+ instance: cache.m6g.2xlarge
84
+ automatic_failover_enabled: true
85
+ multi_az_enabled: true
@@ -0,0 +1,71 @@
1
+ # t-shirt sizes for OpenSearch
2
+
3
+ # 2 vCPU, 2GB RAM, volume size range 10-100GB
4
+ tiny:
5
+ volume_size: 80
6
+ instances: 1
7
+ instance: t3.small.search
8
+ enable_ha: false
9
+
10
+ # 2 vCPU, 2GB RAM, volume size range 10-100GB
11
+ tiny-ha:
12
+ volume_size: 80
13
+ instances: 2
14
+ instance: t3.small.search
15
+ enable_ha: true
16
+
17
+ # 2 vCPU, 4GB RAM, volume size range 10-200GB
18
+ small:
19
+ volume_size: 200
20
+ instances: 1
21
+ instance: t3.medium.search
22
+ enable_ha: false
23
+
24
+ # 2 nodes with 2 vCPU, 4GB RAM, volume size range 10-200GB
25
+ small-ha:
26
+ volume_size: 200
27
+ instances: 2
28
+ instance: t3.medium.search
29
+ enable_ha: true
30
+
31
+ # 2 vCPU, 8GB RAM, volume size range 10-512GB
32
+ medium:
33
+ volume_size: 512
34
+ instances: 1
35
+ instance: m6g.large.search
36
+ enable_ha: false
37
+
38
+ # 2 nodes with 2 vCPU, 8GB RAM, volume size range 10-512GB
39
+ medium-ha:
40
+ volume_size: 512
41
+ instances: 2
42
+ instance: m6g.large.search
43
+ enable_ha: true
44
+
45
+ # 4 vCPU, 16GB RAM, volume size range 10-1000GB
46
+ large:
47
+ volume_size: 1000
48
+ instances: 1
49
+ instance: m6g.xlarge.search
50
+ enable_ha: false
51
+
52
+ # 2 nodes with 4 vCPU, 16GB RAM, volume size range 10-1000GB
53
+ large-ha:
54
+ volume_size: 1000
55
+ instances: 2
56
+ instance: m6g.xlarge.search
57
+ enable_ha: true
58
+
59
+ # 8 vCPU, 32GB RAM, volume size range 10-1500GB
60
+ x-large:
61
+ volume_size: 1500
62
+ instances: 1
63
+ instance: m6g.2xlarge.search
64
+ enable_ha: false
65
+
66
+ # 2 nodes with 8 vCPU, 32GB RAM, volume size range 10-1500GB
67
+ x-large-ha:
68
+ volume_size: 1500
69
+ instances: 2
70
+ instance: m6g.2xlarge.search
71
+ enable_ha: true