Skip to content

Commit 73c9f1d

Browse files
committed
Get lambda layer and core infra values from SSM (Parameter Store) (#236)
1 parent a003694 commit 73c9f1d

File tree

2 files changed

+37
-47
lines changed

2 files changed

+37
-47
lines changed

terraform/data.tf

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,15 @@
1-
# import core state
2-
data "terraform_remote_state" "core" {
3-
backend = "s3"
4-
config = {
5-
bucket = local.tf_state_bucket
6-
region = "us-east-1"
7-
key = "core.tfstate"
8-
}
1+
data "aws_ssm_parameter" "core_contract" {
2+
name = "/infra/${var.environment}/gfw-aws-core-infra/contract"
93
}
104

11-
12-
data "terraform_remote_state" "lambda_layers" {
13-
backend = "s3"
14-
config = {
15-
bucket = local.tf_state_bucket
16-
region = "us-east-1"
17-
key = "lambda-layers.tfstate"
18-
}
5+
data "aws_ssm_parameter" "lambda_layers_contract" {
6+
name = "/infra/${var.environment}/gfw-lambda-layers/contract"
197
}
208

9+
locals {
10+
core = jsondecode(data.aws_ssm_parameter.core_contract.value)
11+
lambda_layers = jsondecode(data.aws_ssm_parameter.lambda_layers_contract.value)
12+
}
2113

2214
data "template_file" "container_definition" {
2315
template = file("${path.root}/templates/container_definition.json.tmpl")
@@ -29,15 +21,15 @@ data "template_file" "container_definition" {
2921

3022
log_group = aws_cloudwatch_log_group.default.name
3123

32-
reader_secret_arn = data.terraform_remote_state.core.outputs.secrets_postgresql-reader_arn
33-
token_secret_arn = data.terraform_remote_state.core.outputs.secrets_read-gfw-api-token_arn
34-
log_level = var.log_level
35-
project = local.project
36-
environment = var.environment
37-
aws_region = var.region
38-
tile_cache_url = local.tile_cache_url
39-
raster_tiler_lambda_name = module.lambda_raster_tiler.lambda_name
40-
tiles_bucket_name = module.storage.tiles_bucket_name
24+
reader_secret_arn = local.core.postgresql_reader_secret_arn
25+
token_secret_arn = local.core.gfw_data_api_token_arn
26+
log_level = var.log_level
27+
project = local.project
28+
environment = var.environment
29+
aws_region = var.region
30+
tile_cache_url = local.tile_cache_url
31+
raster_tiler_lambda_name = module.lambda_raster_tiler.lambda_name
32+
tiles_bucket_name = module.storage.tiles_bucket_name
4133
new_relic_license_key_arn = data.aws_secretsmanager_secret.newrelic_license.arn
4234
data_lake_bucket_name = local.data_lake_bucket_name
4335
}
@@ -53,4 +45,4 @@ data "aws_iam_policy_document" "read_new_relic_lic" {
5345
resources = [data.aws_secretsmanager_secret.newrelic_license.arn]
5446
effect = "Allow"
5547
}
56-
}
48+
}

terraform/main.tf

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,14 @@ terraform {
66
}
77
}
88

9-
109
locals {
1110
name_suffix = terraform.workspace == "default" ? "" : "-${terraform.workspace}"
1211
bucket_suffix = var.environment == "production" ? "" : "-${var.environment}"
13-
tf_state_bucket = "gfw-terraform${local.bucket_suffix}"
14-
tags = data.terraform_remote_state.core.outputs.tags
12+
tags = local.core.tags
1513
project = "gfw-tile-cache"
1614
container_tag = substr(var.git_sha, 0, 7)
1715
tile_cache_url = "https://${var.tile_cache_url}"
18-
data_lake_bucket_name = var.data_lake_bucket_name == "" ? data.terraform_remote_state.core.outputs.data-lake_bucket : var.data_lake_bucket_name
16+
data_lake_bucket_name = var.data_lake_bucket_name == "" ? local.core.data_lake_bucket_name : var.data_lake_bucket_name
1917
}
2018

2119
# Docker file for FastAPI app
@@ -32,9 +30,9 @@ module "orchestration" {
3230
project = local.project
3331
name_suffix = local.name_suffix
3432
tags = local.tags
35-
vpc_id = data.terraform_remote_state.core.outputs.vpc_id
36-
private_subnet_ids = data.terraform_remote_state.core.outputs.private_subnet_ids
37-
public_subnet_ids = data.terraform_remote_state.core.outputs.public_subnet_ids
33+
vpc_id = local.core.vpc_id
34+
private_subnet_ids = local.core.private_subnet_ids
35+
public_subnet_ids = local.core.public_subnet_ids
3836
container_name = var.container_name
3937
container_port = var.container_port
4038
desired_count = var.desired_count
@@ -44,15 +42,15 @@ module "orchestration" {
4442
auto_scaling_max_capacity = var.auto_scaling_max_capacity
4543
auto_scaling_max_cpu_util = var.auto_scaling_max_cpu_util
4644
auto_scaling_min_capacity = var.auto_scaling_min_capacity
47-
security_group_ids = [data.terraform_remote_state.core.outputs.postgresql_security_group_id]
45+
security_group_ids = [local.core.postgresql_security_group_id]
4846
task_role_policies = [
4947
module.lambda_raster_tiler.lambda_invoke_policy_arn,
5048
module.storage.s3_write_tiles_arn,
5149
"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
5250
]
5351
task_execution_role_policies = [
54-
data.terraform_remote_state.core.outputs.secrets_postgresql-reader_policy_arn,
55-
data.terraform_remote_state.core.outputs.secrets_read-gfw-api-token_policy_arn,
52+
local.core.postgresql_reader_secret_policy_arn,
53+
local.core.gfw_data_api_token_read_policy_arn,
5654
aws_iam_policy.read_new_relic_secret.arn
5755
]
5856
container_definition = data.template_file.container_definition.rendered
@@ -61,7 +59,7 @@ module "orchestration" {
6159
module "content_delivery_network" {
6260
source = "./modules/content_delivery_network"
6361
bucket_domain_name = module.storage.tiles_bucket_domain_name
64-
certificate_arn = data.terraform_remote_state.core.outputs.acm_certificate
62+
certificate_arn = local.core.acm_certificate_arn
6563
environment = var.environment
6664
name_suffix = local.name_suffix
6765
project = local.project
@@ -88,18 +86,18 @@ module "lambda_raster_tiler" {
8886
source = "./modules/lambda_raster_tiler"
8987
environment = var.environment
9088
lambda_layers = [
91-
data.terraform_remote_state.lambda_layers.outputs.py310_numpy_1264_arn,
92-
data.terraform_remote_state.lambda_layers.outputs.py310_pillow_950_arn,
93-
data.terraform_remote_state.lambda_layers.outputs.py310_rasterio_no_numpy_arn,
94-
data.terraform_remote_state.lambda_layers.outputs.py310_mercantile_121_arn
89+
local.lambda_layers.py310_numpy_arn,
90+
local.lambda_layers.py310_pillow_950_arn,
91+
local.lambda_layers.py310_rasterio_no_numpy_arn,
92+
local.lambda_layers.py310_mercantile_121_arn
9593
]
96-
lambda_runtime = var.lambda_runtime
97-
log_level = var.log_level
98-
project = local.project
99-
source_dir = "${path.root}/../lambdas/raster_tiler"
100-
tags = local.tags
94+
lambda_runtime = var.lambda_runtime
95+
log_level = var.log_level
96+
project = local.project
97+
source_dir = "${path.root}/../lambdas/raster_tiler"
98+
tags = local.tags
10199
data_lake_bucket_name = local.data_lake_bucket_name
102-
tile_cache_url = local.tile_cache_url
100+
tile_cache_url = local.tile_cache_url
103101
}
104102

105103
resource "aws_iam_policy" "read_new_relic_secret" {

0 commit comments

Comments
 (0)