Skip to content

Commit e3f9fe2

Browse files
committed
var-ize SnapStart
1 parent 17d2098 commit e3f9fe2

File tree

3 files changed

+32
-17
lines changed

3 files changed

+32
-17
lines changed

example/main.tf

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,13 @@ provider "aws" {
1515
##############
1616

1717
locals {
18-
domain = "slack.${var.domain}"
19-
name = "slackbot"
20-
region = "us-east-1"
18+
domain = "slack.${var.domain}"
19+
name = "slackbot"
20+
region = "us-east-1"
21+
snap_start_enabled = false
22+
23+
handlers = fileset("${path.module}/functions", "**/index.py")
24+
custom_responders = toset([for handler in local.handlers : dirname(dirname(handler))])
2125

2226
parameters = {
2327
client_secret = var.slack_client_secret
@@ -58,6 +62,9 @@ module "slackbot" {
5862
domain_certificate_arn = data.aws_acm_certificate.cert.arn
5963
domain_zone_id = data.aws_route53_zone.zone.id
6064

65+
# LAMBDA
66+
lambda_snap_start_enabled = local.snap_start_enabled
67+
6168
# SLACK
6269
slack_client_id = var.slack_client_id
6370
slack_client_secret = var.slack_client_secret
@@ -76,11 +83,6 @@ module "slackbot" {
7683
# CUSTOM RESPONDERS #
7784
#########################
7885

79-
locals {
80-
handlers = fileset("${path.module}/functions", "**/index.py")
81-
custom_responders = toset([for handler in local.handlers : dirname(dirname(handler))])
82-
}
83-
8486
data "archive_file" "custom_responders" {
8587
for_each = local.custom_responders
8688
source_dir = "${path.module}/functions/${each.value}/src"
@@ -95,13 +97,13 @@ resource "aws_lambda_function" "custom_responders" {
9597
filename = data.archive_file.custom_responders[each.value].output_path
9698
function_name = "${local.name}-api-${each.value}"
9799
handler = "index.handler"
98-
publish = true
100+
publish = local.snap_start_enabled
99101
role = module.slackbot.roles["lambda"].arn
100102
runtime = "python3.13"
101103
source_code_hash = data.archive_file.custom_responders[each.value].output_base64sha256
102104

103105
snap_start {
104-
apply_on = "PublishedVersions"
106+
apply_on = local.snap_start_enabled ? "PublishedVersions" : "None"
105107
}
106108
}
107109

main.tf

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -144,15 +144,22 @@ locals {
144144

145145
functions = {
146146
authorizer = {
147-
description = "Slack request authorizer"
148-
memory_size = 1024
147+
description = "Slack request authorizer"
148+
memory_size = 1024
149+
publish = var.lambda_snap_start_enabled
150+
runtime = var.lambda_runtime
151+
snap_start_enabled = var.lambda_snap_start_enabled
149152
variables = {
150153
SIGNING_SECRET = var.slack_signing_secret
151154
}
152155
}
156+
153157
oauth = {
154-
description = "Slack OAuth completion"
155-
memory_size = 256
158+
description = "Slack OAuth completion"
159+
memory_size = 256
160+
publish = var.lambda_snap_start_enabled
161+
runtime = var.lambda_runtime
162+
snap_start_enabled = var.lambda_snap_start_enabled
156163
variables = {
157164
CLIENT_ID = var.slack_client_id
158165
CLIENT_SECRET = var.slack_client_secret
@@ -347,9 +354,9 @@ resource "aws_lambda_function" "functions" {
347354
function_name = "${var.name}-api-${each.key}"
348355
handler = "index.handler"
349356
memory_size = each.value.memory_size
350-
publish = true
357+
publish = each.value.publish
351358
role = aws_iam_role.roles["lambda"].arn
352-
runtime = var.lambda_runtime
359+
runtime = each.value.runtime
353360
source_code_hash = data.archive_file.packages[each.key].output_base64sha256
354361
tags = var.tags
355362
timeout = 3
@@ -359,7 +366,7 @@ resource "aws_lambda_function" "functions" {
359366
}
360367

361368
snap_start {
362-
apply_on = "PublishedVersions"
369+
apply_on = each.value.snap_start_enabled ? "PublishedVersions" : "None"
363370
}
364371
}
365372

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,12 @@ variable "lambda_runtime" {
8383
default = "python3.13"
8484
}
8585

86+
variable "lambda_snap_start_enabled" {
87+
description = "Lambda function SnapStart enabled"
88+
type = bool
89+
default = false
90+
}
91+
8692
#############
8793
# SLACK #
8894
#############

0 commit comments

Comments
 (0)