Skip to content

Commit

Permalink
Update Terraform stack
Browse files Browse the repository at this point in the history
  • Loading branch information
DougTrajano committed Apr 29, 2022
1 parent cc48fa7 commit 2d5b51f
Show file tree
Hide file tree
Showing 13 changed files with 264 additions and 150 deletions.
47 changes: 32 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# [MLflow](https://www.mlflow.org/) using AWS App Runner
# [MLflow](https://www.mlflow.org/) with basic auth

This project deploys an MLflow instance with basic auth (username/password) in AWS App Runner.
This project deploys an MLflow Tracking Server with basic auth (username and password).

We also provide a [Terraform](https://www.terraform.io/) configuration in the [terraform](terraform) directory that creates the required resources in AWS. It uses the [AWS App Runner](https://aws.amazon.com/apprunner/) (a low-cost solution to run containers on AWS) to run the server.

## Architecture

Expand Down Expand Up @@ -30,10 +32,10 @@ This project deploys an MLflow instance with basic auth (username/password) in A
</p>
</details>

<details><summary>Amazon RDS</summary>
<details><summary>Amazon Aurora Serverless</summary>
<p>

[Amazon Relational Database Service (Amazon RDS)](https://aws.amazon.com/rds/) makes it easy to set up, operate, and scale a relational database in the cloud. Amazon RDS provides six familiar database engines to choose from, including Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle Database, and SQL Server.
[Amazon Aurora Serverless](https://aws.amazon.com/rds/aurora/serverless/) is an on-demand, autoscaling configuration for Amazon Aurora. It automatically starts up, shuts down, and scales capacity up or down based on your application's needs. You can run your database on AWS without managing database capacity.

</p>
</details>
Expand Down Expand Up @@ -107,7 +109,11 @@ To deploy MLflow, you'll need to:

2. Configure AWS CLI to use your AWS account.

3. Clone the repository: [github.com/DougTrajano/mlflow-server](https://github.com/DougTrajano/mlflow-server/)
3. Clone this repository.

```bash
git clone https://github.com/DougTrajano/mlflow-server.git
```

4. Open `mlflow-server/terraform` folder.

Expand All @@ -119,24 +125,35 @@ cd mlflow-server/terraform

```bash
terraform init
terraform apply -var mlflow_username="USERNAME-HERE" -var mlflow_password="PASSWORD-HERE"
terraform apply -var mlflow_username="YOUR-USERNAME" -var mlflow_password="YOUR-PASSWORD"
```

6. Type "yes" when prompted to continue.

This will create the following resources:
```log
Plan: 21 to add, 0 to change, 2 to destroy.
Changes to Outputs:
+ artifact_bucket_id = (known after apply)
+ mlflow_password = (sensitive value)
+ mlflow_username = "YOUR-USERNAME"
+ service_url = (known after apply)
+ status = (known after apply)
- An [S3 bucket](https://aws.amazon.com/s3/) for storing MLflow artifacts.
- An [IAM role and policy](https://aws.amazon.com/iam/) for the MLflow server connect to the S3 bucket.
- An [RDS](https://aws.amazon.com/rds/) database instance (MySQL) for storing MLflow metadata.
- A service in [App Runner](https://aws.amazon.com/apprunner/) to run MLflow Tracking Server.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
![](docs/images/terraform_stack.png)
Enter a value: yes
```

## Next features
This will create the following resources:

- Change RDS Database to Aurora Serverless will reduce the cost drastically for those who don't use MLflow frequently, but Aurora Serverless can only connect with AWS resources that are in the same VPC, AWS App Runner doesn't support VPC yet.
- [Allow App Runner services to talk to AWS resources in a private Amazon VPC · Issue #1 · aws/apprunner-roadmap](https://github.com/aws/apprunner-roadmap/issues/1)
- An [S3 bucket](https://aws.amazon.com/s3/) used to store MLflow artifacts.
- An [IAM role and policy](https://aws.amazon.com/iam/) that allow MLflow to access the S3 bucket.
- An [Aurora RDS Serverless v1](https://aws.amazon.com/rds/) database (PostgreSQL) used to store MLflow data.
- An [App Runner](https://aws.amazon.com/apprunner/) that will run the MLflow Tracking Server.
- (Optional) A set of network resources such as [VPC](https://aws.amazon.com/vpc/), [Subnet](https://aws.amazon.com/ec2/subnets/), and [Security group](https://aws.amazon.com/ec2/security-groups/).

## References

Expand Down
2 changes: 1 addition & 1 deletion docs/diagrams.drawio
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<mxfile host="Electron" modified="2021-06-05T14:20:47.827Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.6.13 Chrome/89.0.4389.128 Electron/12.0.7 Safari/537.36" etag="PzT6RljHmhN7wA9FTuv3" version="14.6.13" type="device"><diagram id="ttuNvuaozTtxgxHSX0gf" name="architecture">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</diagram></mxfile>
<mxfile host="Electron" modified="2022-04-29T04:03:17.197Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.1.2 Chrome/96.0.4664.55 Electron/16.0.5 Safari/537.36" etag="t5ovX954NJrda2KKQm0C" version="16.1.2" type="device"><diagram id="ttuNvuaozTtxgxHSX0gf" name="architecture">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</diagram></mxfile>
Binary file modified docs/images/architecture_mlflow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/images/terraform_stack.png
Binary file not shown.
10 changes: 5 additions & 5 deletions terraform/iam.tf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
resource "aws_iam_role" "iam_role" {
resource "aws_iam_role" "mlflow_iam_role" {
name = "${local.name}-role"

assume_role_policy = jsonencode({
Expand Down Expand Up @@ -29,10 +29,10 @@ resource "aws_iam_role" "iam_role" {
)
}

resource "aws_iam_role_policy" "bucket_policy" {
resource "aws_iam_role_policy" "mlflow_bucket_policy" {
count = local.create_dedicated_bucket ? 1 : 0
name_prefix = "access_to_mlflow_bucket"
role = aws_iam_role.iam_role.id
role = aws_iam_role.mlflow_iam_role.id

policy = jsonencode({
Version = "2012-10-17"
Expand All @@ -44,7 +44,7 @@ resource "aws_iam_role_policy" "bucket_policy" {
"s3:HeadBucket",
]
Resource = concat(
aws_s3_bucket.artifact_store.*.arn,
aws_s3_bucket.mlflow_artifact_store.*.arn,
)
},
{
Expand All @@ -68,7 +68,7 @@ resource "aws_iam_role_policy" "bucket_policy" {
"s3:GetObjectVersion",
]
Resource = [
for bucket in concat(aws_s3_bucket.artifact_store.*.arn) :
for bucket in concat(aws_s3_bucket.mlflow_artifact_store.*.arn) :
"${bucket}/*"
]
},
Expand Down
15 changes: 13 additions & 2 deletions terraform/locals.tf
Original file line number Diff line number Diff line change
@@ -1,15 +1,26 @@
data "aws_availability_zones" "available" {
state = "available"
}

locals {
# General
name = "${var.name}-${var.environment}"

availability_zones = slice(data.aws_availability_zones.available.names, 0, 3)

# RDS database
db_username = "mlflow"
db_database = "mlflow"
db_port = 3306
db_port = 5432
db_subnet_ids = local.create_dedicated_vpc ? aws_subnet.mlflow_public_subnet.*.id : var.db_subnet_ids

# VPC and subnets
create_dedicated_vpc = var.vpc_id == null
vpc_id = local.create_dedicated_vpc ? aws_vpc.mlflow_vpc.0.id : var.vpc_id

# S3 bucket
create_dedicated_bucket = var.artifact_bucket_id == null
artifact_bucket_id = local.create_dedicated_bucket ? aws_s3_bucket.artifact_store.0.id : var.artifact_bucket_id
artifact_bucket_id = local.create_dedicated_bucket ? aws_s3_bucket.mlflow_artifact_store.0.id : var.artifact_bucket_id

# App Runner
app_port = 8080
Expand Down
50 changes: 50 additions & 0 deletions terraform/network.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
resource "aws_vpc" "mlflow_vpc" {
count = local.create_dedicated_vpc ? 1 : 0
cidr_block = "10.0.0.0/16"
enable_dns_hostnames = true
enable_dns_support = true

tags = {
Name = "${local.name}-vpc"
}
}

resource "aws_subnet" "mlflow_public_subnet" {
count = local.create_dedicated_vpc ? length(local.availability_zones) : 0
vpc_id = local.vpc_id
cidr_block = "10.0.${10+count.index}.0/24"
availability_zone = "${data.aws_availability_zones.available.names[count.index]}"

tags = {
Name = "${local.name}-public-subnet"
}
}

resource "aws_internet_gateway" "mlflow_gateway" {
count = local.create_dedicated_vpc ? 1 : 0
vpc_id = local.vpc_id

tags = {
Name = "${local.name}-igw"
}
}

resource "aws_route_table" "mlflow_crt" {
count = local.create_dedicated_vpc ? 1 : 0
vpc_id = local.vpc_id

route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.mlflow_gateway.0.id
}

tags = {
Name = "${local.name}-crt"
}
}

resource "aws_route_table_association" "mlflow_crt_association" {
count = local.create_dedicated_vpc ? 1 : 0
subnet_id = aws_subnet.mlflow_public_subnet.0.id
route_table_id = aws_route_table.mlflow_crt.0.id
}
10 changes: 3 additions & 7 deletions terraform/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
output "artifact_bucket_id" {
value = aws_s3_bucket.artifact_store.0.id
value = aws_s3_bucket.mlflow_artifact_store.0.id
}

output "service_url" {
value = aws_apprunner_service.server.service_url
}

output "port" {
value = local.app_port
value = "https://${aws_apprunner_service.mlflow_server.service_url}"
}

output "mlflow_username" {
Expand All @@ -20,5 +16,5 @@ output "mlflow_password" {
}

output "status" {
value = aws_apprunner_service.server.status
value = aws_apprunner_service.mlflow_server.status
}
2 changes: 1 addition & 1 deletion terraform/providers.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.27"
version = "~> 4.11.0"
}

}
Expand Down
84 changes: 26 additions & 58 deletions terraform/rds.tf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
resource "random_password" "backend_store" {
resource "random_password" "mlflow_backend_store" {
length = 16
special = true

Expand All @@ -11,71 +11,39 @@ resource "random_password" "backend_store" {
}
}

resource "aws_db_instance" "backend_store" {
identifier = "${local.name}-db"
allocated_storage = 5
max_allocated_storage = 100
engine = "mysql"
engine_version = "8.0.23"
instance_class = var.db_instance_class
name = local.db_database
username = local.db_username
password = "${random_password.backend_store.result}"
resource "aws_db_subnet_group" "rds" {
name = "${local.name}-rds-subnet-group"
subnet_ids = local.db_subnet_ids
}

resource "aws_rds_cluster" "mlflow_backend_store" {
cluster_identifier = "${local.name}-rds"
engine = "aurora-postgresql"
engine_mode = "serverless"
port = local.db_port
db_subnet_group_name = aws_db_subnet_group.rds.name
vpc_security_group_ids = [aws_security_group.mlflow_server_sg.id]
availability_zones = local.availability_zones
database_name = local.db_database
master_username = local.db_username
master_password = random_password.mlflow_backend_store.result
backup_retention_period = 5
preferred_backup_window = "04:00-06:00"
final_snapshot_identifier = "mlflow-db-backup"
skip_final_snapshot = var.db_skip_final_snapshot
backup_retention_period = 1
backup_window = "04:00-06:00"
apply_immediately = true
publicly_accessible = true

scaling_configuration {
min_capacity = var.db_min_capacity
max_capacity = var.db_max_capacity
auto_pause = var.db_auto_pause
seconds_until_auto_pause = var.db_auto_pause_seconds
}

tags = merge(
{
Name = "${local.name}-rds"
},
local.tags
)
}

###
# The following resources needs a new feature in the app runner that allows access to resources in a VPC
# It is currently in AWS App Runner roadmap.
###

# data "aws_availability_zones" "available" {
# state = "available"
# }

# resource "aws_rds_cluster" "backend_store" {
# cluster_identifier = "${local.name}-rds"
# engine = "aurora-mysql"
# engine_version = "5.7.mysql_aurora.2.10.0"
# engine_mode = "serverless"
# port = local.db_port
# # db_subnet_group_name = aws_db_subnet_group.rds.name
# # vpc_security_group_ids = [aws_security_group.rds.id]
# availability_zones = slice(data.aws_availability_zones.available.names, 0, 2)
# database_name = local.db_database
# master_username = local.db_username
# master_password = random_password.backend_store.result
# backup_retention_period = 5
# preferred_backup_window = "04:00-06:00"
# final_snapshot_identifier = "mlflow-db-backup"
# skip_final_snapshot = var.db_skip_final_snapshot
# apply_immediately = true

# scaling_configuration {
# min_capacity = var.db_min_capacity
# max_capacity = var.db_max_capacity
# auto_pause = var.db_auto_pause
# seconds_until_auto_pause = var.db_auto_pause_seconds
# timeout_action = "ForceApplyCapacityChange"
# }

# tags = merge(
# {
# Name = "${local.name}-rds"
# },
# local.tags
# )
# }
}
Loading

0 comments on commit 2d5b51f

Please sign in to comment.