@@ -80,6 +80,7 @@ resource "aws_alb_target_group" "tg" {
8080}
8181
8282resource "aws_alb_target_group" "tst_tg" {
83+ count = var. use_codedeploy ? 1 : 0
8384 name = " ${ local . long_name } -tst"
8485 target_type = " lambda"
8586 tags = var. tags
@@ -104,13 +105,14 @@ resource "aws_alb_listener" "https" {
104105}
105106
106107resource "aws_alb_listener" "test_https" {
108+ count = var. use_codedeploy ? 1 : 0
107109 load_balancer_arn = aws_alb. alb . arn
108110 port = 4443
109111 protocol = " HTTPS"
110112 certificate_arn = var. https_certificate_arn
111113 default_action {
112114 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
114116 }
115117 lifecycle {
116118 ignore_changes = [default_action [0 ]. target_group_arn ]
@@ -144,11 +146,12 @@ resource "aws_lambda_permission" "with_lb" {
144146}
145147
146148resource "aws_lambda_permission" "with_tst_lb" {
149+ count = var. use_codedeploy ? 1 : 0
147150 statement_id = " AllowExecutionFromlb"
148151 action = " lambda:InvokeFunction"
149152 function_name = aws_lambda_function. api_lambda . arn
150153 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
152155}
153156
154157resource "aws_alb_target_group_attachment" "live_attachment" {
@@ -158,7 +161,8 @@ resource "aws_alb_target_group_attachment" "live_attachment" {
158161}
159162
160163resource "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
162166 target_id = aws_lambda_function. api_lambda . arn # Latest
163167 depends_on = [aws_lambda_permission . with_tst_lb ]
164168}
@@ -259,15 +263,15 @@ resource "aws_lambda_function" "api_lambda" {
259263}
260264
261265resource "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
266270 function_version = aws_lambda_function. api_lambda . version
267271}
268272
269273resource "aws_lambda_alias" "live_codedeploy" {
270- count = var. use_codedeploy ? 1 : 0
274+ count = var. use_codedeploy ? 1 : 0
271275 name = " live"
272276 description = " ALB sends traffic to this version"
273277 function_name = aws_lambda_function. api_lambda . arn
@@ -284,13 +288,13 @@ resource "aws_lambda_alias" "live_codedeploy" {
284288# ==================== CodeDeploy ====================
285289
286290resource "aws_codedeploy_app" "app" {
287- count = var. use_codedeploy ? 1 : 0
291+ count = var. use_codedeploy ? 1 : 0
288292 compute_platform = " Lambda"
289293 name = " ${ local . long_name } -cd"
290294}
291295
292296resource "aws_codedeploy_deployment_group" "deployment_group" {
293- count = var. use_codedeploy ? 1 : 0
297+ count = var. use_codedeploy ? 1 : 0
294298 app_name = aws_codedeploy_app. app [0 ]. name
295299 deployment_group_name = " ${ local . long_name } -dg"
296300 service_role_arn = var. codedeploy_service_role_arn
@@ -322,18 +326,18 @@ resource "aws_iam_role_policy_attachment" "lambda_cloudwatch_attach" {
322326# ==================== AppSpec file ====================
323327
324328resource "local_file" "appspec_json" {
325- count = var. use_codedeploy ? 1 : 0
329+ count = var. use_codedeploy ? 1 : 0
326330 filename = " ${ path . cwd } /appspec.json"
327331 content = jsonencode ({
328332 version = 1
329333 Resources = [{
330334 apiLambdaFunction = {
331335 Type = " AWS::Lambda::Function"
332336 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
337341 }
338342 }
339343 }],
0 commit comments