@@ -80,6 +80,7 @@ resource "aws_alb_target_group" "tg" {
80
80
}
81
81
82
82
resource "aws_alb_target_group" "tst_tg" {
83
+ count = var. use_codedeploy ? 1 : 0
83
84
name = " ${ local . long_name } -tst"
84
85
target_type = " lambda"
85
86
tags = var. tags
@@ -104,13 +105,14 @@ resource "aws_alb_listener" "https" {
104
105
}
105
106
106
107
resource "aws_alb_listener" "test_https" {
108
+ count = var. use_codedeploy ? 1 : 0
107
109
load_balancer_arn = aws_alb. alb . arn
108
110
port = 4443
109
111
protocol = " HTTPS"
110
112
certificate_arn = var. https_certificate_arn
111
113
default_action {
112
114
type = " forward"
113
- target_group_arn = aws_alb_target_group. tst_tg . arn
115
+ target_group_arn = aws_alb_target_group. tst_tg [ 0 ] . arn
114
116
}
115
117
lifecycle {
116
118
ignore_changes = [default_action [0 ]. target_group_arn ]
@@ -144,11 +146,12 @@ resource "aws_lambda_permission" "with_lb" {
144
146
}
145
147
146
148
resource "aws_lambda_permission" "with_tst_lb" {
149
+ count = var. use_codedeploy ? 1 : 0
147
150
statement_id = " AllowExecutionFromlb"
148
151
action = " lambda:InvokeFunction"
149
152
function_name = aws_lambda_function. api_lambda . arn
150
153
principal = " elasticloadbalancing.amazonaws.com"
151
- source_arn = aws_alb_target_group. tst_tg . arn
154
+ source_arn = aws_alb_target_group. tst_tg [ 0 ] . arn
152
155
}
153
156
154
157
resource "aws_alb_target_group_attachment" "live_attachment" {
@@ -158,7 +161,8 @@ resource "aws_alb_target_group_attachment" "live_attachment" {
158
161
}
159
162
160
163
resource "aws_alb_target_group_attachment" "tst_attachment" {
161
- target_group_arn = aws_alb_target_group. tst_tg . arn
164
+ count = var. use_codedeploy ? 1 : 0
165
+ target_group_arn = aws_alb_target_group. tst_tg [0 ]. arn
162
166
target_id = aws_lambda_function. api_lambda . arn # Latest
163
167
depends_on = [aws_lambda_permission . with_tst_lb ]
164
168
}
@@ -259,15 +263,15 @@ resource "aws_lambda_function" "api_lambda" {
259
263
}
260
264
261
265
resource "aws_lambda_alias" "live" {
262
- count = ! var. use_codedeploy ? 1 : 0
263
- name = " live"
264
- description = " ALB sends traffic to this version"
265
- function_name = aws_lambda_function. api_lambda . arn
266
+ count = ! var. use_codedeploy ? 1 : 0
267
+ name = " live"
268
+ description = " ALB sends traffic to this version"
269
+ function_name = aws_lambda_function. api_lambda . arn
266
270
function_version = aws_lambda_function. api_lambda . version
267
271
}
268
272
269
273
resource "aws_lambda_alias" "live_codedeploy" {
270
- count = var. use_codedeploy ? 1 : 0
274
+ count = var. use_codedeploy ? 1 : 0
271
275
name = " live"
272
276
description = " ALB sends traffic to this version"
273
277
function_name = aws_lambda_function. api_lambda . arn
@@ -284,13 +288,13 @@ resource "aws_lambda_alias" "live_codedeploy" {
284
288
# ==================== CodeDeploy ====================
285
289
286
290
resource "aws_codedeploy_app" "app" {
287
- count = var. use_codedeploy ? 1 : 0
291
+ count = var. use_codedeploy ? 1 : 0
288
292
compute_platform = " Lambda"
289
293
name = " ${ local . long_name } -cd"
290
294
}
291
295
292
296
resource "aws_codedeploy_deployment_group" "deployment_group" {
293
- count = var. use_codedeploy ? 1 : 0
297
+ count = var. use_codedeploy ? 1 : 0
294
298
app_name = aws_codedeploy_app. app [0 ]. name
295
299
deployment_group_name = " ${ local . long_name } -dg"
296
300
service_role_arn = var. codedeploy_service_role_arn
@@ -322,18 +326,18 @@ resource "aws_iam_role_policy_attachment" "lambda_cloudwatch_attach" {
322
326
# ==================== AppSpec file ====================
323
327
324
328
resource "local_file" "appspec_json" {
325
- count = var. use_codedeploy ? 1 : 0
329
+ count = var. use_codedeploy ? 1 : 0
326
330
filename = " ${ path . cwd } /appspec.json"
327
331
content = jsonencode ({
328
332
version = 1
329
333
Resources = [{
330
334
apiLambdaFunction = {
331
335
Type = " AWS::Lambda::Function"
332
336
Properties = {
333
- Name = aws_lambda_function.api_lambda.function_name
334
- Alias = aws_lambda_alias.live_codedeploy[0 ].name
335
- CurrentVersion = aws_lambda_function.api_lambda.version # TODO: figure out how to get previous version for rollback
336
- TargetVersion = aws_lambda_function.api_lambda.version
337
+ Name = aws_lambda_function.api_lambda.function_name
338
+ Alias = aws_lambda_alias.live_codedeploy[0 ].name
339
+ CurrentVersion = aws_lambda_alias.live_codedeploy[ 0 ].function_version
340
+ TargetVersion = aws_lambda_function.api_lambda.version
337
341
}
338
342
}
339
343
}],
0 commit comments