Skip to content

Commit 238740f

Browse files
irasnydIra W. Snyder
and
Ira W. Snyder
authored
Fix connections to PostgreSQL 15 and later (#95)
Require SSL when configured for PostgreSQL 15 and later. Co-authored-by: Ira W. Snyder <[email protected]>
1 parent ee7093c commit 238740f

File tree

4 files changed

+19
-1
lines changed

4 files changed

+19
-1
lines changed

locals.tf

+4
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,8 @@ locals {
2121
module.metaflow-common.default_ui_static_container_image :
2222
var.ui_static_container_image
2323
)
24+
25+
# RDS PostgreSQL >= 15 requires SSL by default
26+
# https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.SSL.html#PostgreSQL.Concepts.General.SSL.Requiring
27+
database_ssl_mode = tonumber(split(".", var.db_engine_version)[0]) >= 15 ? "require" : "disable"
2428
}

main.tf

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ module "metaflow-metadata-service" {
2828
database_name = module.metaflow-datastore.database_name
2929
database_password = module.metaflow-datastore.database_password
3030
database_username = module.metaflow-datastore.database_username
31+
database_ssl_mode = local.database_ssl_mode
3132
db_migrate_lambda_zip_file = var.db_migrate_lambda_zip_file
3233
datastore_s3_bucket_kms_key_arn = module.metaflow-datastore.datastore_s3_bucket_kms_key_arn
3334
enable_api_basic_auth = var.metadata_service_enable_api_basic_auth

modules/metadata-service/ecs.tf

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ resource "aws_ecs_task_definition" "this" {
3636
{"name": "MF_METADATA_DB_NAME", "value": "${var.database_name}"},
3737
{"name": "MF_METADATA_DB_PORT", "value": "5432"},
3838
{"name": "MF_METADATA_DB_PSWD", "value": "${var.database_password}"},
39-
{"name": "MF_METADATA_DB_USER", "value": "${var.database_username}"}
39+
{"name": "MF_METADATA_DB_USER", "value": "${var.database_username}"},
40+
{"name": "MF_METADATA_DB_SSL_MODE", "value": "${var.database_ssl_mode}"}
4041
],
4142
"logConfiguration": {
4243
"logDriver": "awslogs",

modules/metadata-service/variables.tf

+12
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@ variable "database_username" {
2020
description = "The database username"
2121
}
2222

23+
variable "database_ssl_mode" {
24+
type = string
25+
description = "The metadata service database connection ssl mode"
26+
default = "disable"
27+
28+
# https://github.com/Netflix/metaflow-service/blob/master/run_goose.py#L63
29+
validation {
30+
condition = contains(["disable", "allow", "prefer", "require", "verify-ca", "verify-full"], var.database_ssl_mode)
31+
error_message = "The database_ssl_mode variable is invalid."
32+
}
33+
}
34+
2335
variable "datastore_s3_bucket_kms_key_arn" {
2436
type = string
2537
description = "The ARN of the KMS key used to encrypt the Metaflow datastore S3 bucket"

0 commit comments

Comments
 (0)