Skip to content

Commit 85b21e6

Browse files
authored
Revert "Refactor lambda source code (#7)" (#10)
This reverts commit 14f2f4f.
1 parent 14f2f4f commit 85b21e6

File tree

14 files changed

+165
-302
lines changed

14 files changed

+165
-302
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ crash.*.log
2424
# to change depending on the environment.
2525
#
2626
*.tfvars
27-
!terraform.*example*.tfvars
2827

2928
# Ignore override files as they are usually used to override resources locally and so
3029
# are not checked in

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ repos:
1111
args:
1212
- "--args=--only=terraform_deprecated_interpolation"
1313
- "--args=--only=terraform_deprecated_index"
14-
- "--args=--only=terraform_unused_declarations"
14+
# - "--args=--only=terraform_unused_declarations"
1515
- "--args=--only=terraform_comment_syntax"
1616
- "--args=--only=terraform_documented_outputs"
1717
- "--args=--only=terraform_documented_variables"

CHANGELOG.md

Lines changed: 0 additions & 46 deletions
This file was deleted.

README.md

Lines changed: 101 additions & 39 deletions
Large diffs are not rendered by default.

examples/complete/main.tf

Lines changed: 0 additions & 76 deletions
This file was deleted.

examples/complete/outputs.tf

Whitespace-only changes.

examples/complete/src/index.js

Lines changed: 0 additions & 18 deletions
This file was deleted.

examples/complete/variables.tf

Whitespace-only changes.

examples/simple/main.tf

Lines changed: 0 additions & 45 deletions
This file was deleted.

examples/simple/outputs.tf

Whitespace-only changes.

examples/simple/src/index.js

Lines changed: 0 additions & 18 deletions
This file was deleted.

examples/simple/variables.tf

Whitespace-only changes.

main.tf

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44
locals {
55
name = format("%s-%s-%s", var.prefix, var.environment, var.name)
66

7-
lambda_role_arn = var.is_create_lambda_role ? aws_iam_role.this[0].arn : var.lambda_role_arn
8-
9-
file_name = var.is_edge ? null : data.archive_file.this.output_path
10-
bucket_name = var.is_edge ? var.is_create_lambda_bucket ? module.s3[0].bucket_name : var.bucket_name : null
11-
object_key = var.is_edge ? aws_s3_object.this[0].id : null
12-
object_version_id = var.is_edge ? aws_s3_object.this[0].version_id : null
7+
lambda_role_arn = var.is_create_lambda_role ? aws_iam_role.this[0].arn : var.lambda_role_arn
8+
bucket_name = var.is_upload_form_s3 ? var.bucket_name : var.is_create_lambda_bucket ? element(module.s3[*].bucket_name, 0) : var.bucket_name
9+
object_key = var.is_upload_form_s3 ? data.aws_s3_object.this[0].key : aws_s3_object.this[0].id
10+
object_version_id = var.is_upload_form_s3 ? data.aws_s3_object.this[0].version_id : aws_s3_object.this[0].version_id
1311

1412
tags = merge(
1513
{
@@ -23,15 +21,20 @@ locals {
2321
locals {
2422
raise_is_lambda_role_arn_empty = var.is_create_lambda_role == false && var.lambda_role_arn == "" ? file("Variable `lambda_role_arn` is required when `is_create_lambda_role` is false") : "pass"
2523

26-
raise_bucket_name_empty = var.is_edge && var.is_create_lambda_bucket == false && length(var.bucket_name) == 0 ? file("Variable `bucket_name` is required when `is_create_lambda_bucket` is false") : "pass"
27-
raise_local_file_dir_empty = length(var.compressed_local_file_dir) == 0 ? file("Variable `compressed_local_file_dir` is required") : "pass"
28-
raise_file_globs_empty = length(var.file_globs) == 0 ? file("Variable `file_globs` is required") : "pass"
24+
raise_bucket_name_empty = var.is_upload_form_s3 && length(var.bucket_name) == 0 ? file("Variable `bucket_name` is required when `is_upload_form_s3` is true") : "pass"
25+
raise_file_name_empty = var.is_upload_form_s3 && length(var.file_name) == 0 ? file("Variable `file_name` is required when `is_upload_form_s3` is true") : "pass"
26+
27+
raise_compressed_local_file_dir_empty = var.is_upload_form_s3 == false && length(var.compressed_local_file_dir) == 0 ? file("Variable `compressed_local_file_dir` is required when `is_upload_form_s3` is false") : "pass"
28+
raise_file_globs_empty = var.is_upload_form_s3 == false && length(var.file_globs) == 0 ? file("Variable `file_globs` is required when `is_upload_form_s3` is false") : "pass"
2929
}
3030

3131
/* -------------------------------------------------------------------------- */
32-
/* Zip File */
32+
/* S3 */
3333
/* -------------------------------------------------------------------------- */
34-
data "archive_file" "this" {
34+
/* -------------------------------- ZIP File -------------------------------- */
35+
data "archive_file" "zip_file" {
36+
count = var.is_upload_form_s3 == false ? 1 : 0
37+
3538
type = "zip"
3639
output_path = format("%s/%s.zip", var.compressed_local_file_dir, local.name)
3740

@@ -60,13 +63,10 @@ data "archive_file" "this" {
6063
}
6164
}
6265

63-
/* -------------------------------------------------------------------------- */
64-
/* S3 */
65-
/* -------------------------------------------------------------------------- */
6666
module "s3" {
67-
count = var.is_edge && var.is_create_lambda_bucket ? 1 : 0
67+
count = var.is_create_lambda_bucket && var.is_upload_form_s3 == false ? 1 : 0
6868

69-
source = "git@github.com:oozou/terraform-aws-s3.git?ref=v1.0.4"
69+
source = "git@github.com:oozou/terraform-aws-s3.git?ref=v1.0.2"
7070

7171
prefix = var.prefix
7272
environment = var.environment
@@ -80,13 +80,20 @@ module "s3" {
8080
tags = var.tags
8181
}
8282

83+
data "aws_s3_object" "this" {
84+
count = var.is_upload_form_s3 ? 1 : 0
85+
86+
bucket = local.bucket_name
87+
key = var.file_name
88+
}
89+
8390
resource "aws_s3_object" "this" {
84-
count = var.is_edge && var.is_create_lambda_bucket ? 1 : 0
91+
count = var.is_upload_form_s3 == false ? 1 : 0
8592

86-
bucket = element(module.s3[*].bucket_name, 0)
93+
bucket = var.is_create_lambda_bucket ? element(module.s3[*].bucket_name, 0) : var.bucket_name
8794
key = format("%s.zip", local.name)
88-
source = data.archive_file.this.output_path
89-
etag = data.archive_file.this.output_md5
95+
source = data.archive_file.zip_file[0].output_path
96+
etag = data.archive_file.zip_file[0].output_md5
9097

9198
tags = merge(local.tags, { "Name" = format("%s.zip", local.name) })
9299
}
@@ -95,7 +102,7 @@ resource "aws_s3_object" "this" {
95102
/* Resource Based Policy */
96103
/* -------------------------------------------------------------------------- */
97104
resource "aws_lambda_permission" "allow_serivce" {
98-
for_each = var.lambda_permission_configurations
105+
for_each = var.lambda_permission_configuration
99106

100107
statement_id = format("AllowExecutionFrom-%s", each.key)
101108
action = "lambda:InvokeFunction"
@@ -192,7 +199,7 @@ resource "aws_iam_role_policy" "logs_role_policy" {
192199
}
193200

194201
resource "aws_iam_role_policy_attachment" "this" {
195-
for_each = var.is_create_lambda_role ? var.additional_lambda_role_policy_arns : {}
202+
for_each = var.is_create_lambda_role ? toset(var.additional_lambda_role_policy_arns) : toset([])
196203

197204
role = aws_iam_role.this[0].name
198205
policy_arn = each.value
@@ -212,7 +219,7 @@ resource "aws_ssm_parameter" "params" {
212219
type = "SecureString"
213220
tier = length(each.value) > 4096 ? "Advanced" : "Standard"
214221

215-
tags = local.tags
222+
tags = var.tags
216223
}
217224

218225
data "aws_iam_policy_document" "secret_access_policy_doc" {
@@ -254,27 +261,16 @@ resource "aws_lambda_function" "this" {
254261
function_name = format("%s-function", local.name)
255262
description = format("Lambda function: %s", local.name)
256263

257-
# Read source code from s3
264+
# Read the file from s3
258265
s3_bucket = local.bucket_name
259266
s3_key = local.object_key
260267
s3_object_version = local.object_version_id
261268

262-
# Read source code from local
263-
filename = local.file_name
264-
source_code_hash = filebase64sha256(data.archive_file.this.output_path)
265-
266269
# Specification
267270
timeout = var.timeout
268271
memory_size = var.memory_size
269272
reserved_concurrent_executions = var.reserved_concurrent_executions
270273

271-
# Code Env
272-
publish = true # Force public new version
273-
runtime = var.runtime
274-
handler = var.handler
275-
276-
role = local.lambda_role_arn
277-
278274
vpc_config {
279275
security_group_ids = var.vpc_config.security_group_ids
280276
subnet_ids = var.vpc_config.subnet_ids_to_associate
@@ -288,11 +284,17 @@ resource "aws_lambda_function" "this" {
288284
}
289285
}
290286

291-
dynamic "tracing_config" {
292-
for_each = var.tracing_mode == null ? [] : [true]
293-
content {
294-
mode = var.tracing_mode
295-
}
287+
# Code Env
288+
publish = true # Force public new version
289+
runtime = var.runtime
290+
handler = var.handler
291+
292+
role = local.lambda_role_arn
293+
294+
lifecycle {
295+
ignore_changes = [
296+
last_modified,
297+
]
296298
}
297299

298300
tags = merge(local.tags, { "Name" = format("%s-function", local.name) })

0 commit comments

Comments
 (0)