11# Define the directory containing source code and calculate its SHA-256 hash for triggering redeployments
22locals {
3- redis_sync_dir = abspath (" ${ path . root } /../redis_sync/src " )
3+ redis_sync_dir = abspath (" ${ path . root } /../redis_sync" )
44 redis_sync_files = fileset (local. redis_sync_dir , " **" )
55 redis_sync_dir_sha = sha1 (join (" " , [for f in local . redis_sync_files : filesha1 (" ${ local . redis_sync_dir } /${ f } " )]))
66}
@@ -13,16 +13,37 @@ output "redis_sync_files" {
1313 value = " redis_sync_files: ${ join (" , " , local. redis_sync_files )} "
1414}
1515
16+ # data "archive_file" "redis_sync_lambda_zip" {
17+ # type = "zip"
18+ # source_dir = local.redis_sync_dir
19+ # output_path = "${path.module}/build/redis_sync_lambda.zip"
20+ # excludes = ["test/*", "*.zip", "build/*", "venv/*"]
21+ # }
22+
23+ resource "null_resource" "package_lambda" {
24+ provisioner "local-exec" {
25+ command = " ${ path . module } /package_lambda.sh ${ local . redis_sync_dir } "
26+ }
27+
28+ triggers = {
29+ src_hash = sha1 (join (" " , fileset (local. redis_sync_dir , " **" )))
30+ toml_hash = filesha1 (" ${ local . redis_sync_dir } /pyproject.toml" )
31+ lock_hash = filesha1 (" ${ local . redis_sync_dir } /poetry.lock" )
32+ }
33+ }
34+
1635data "archive_file" "redis_sync_lambda_zip" {
1736 type = " zip"
18- source_dir = local . redis_sync_dir
37+ source_dir = " ${ path . module } /build "
1938 output_path = " ${ path . module } /build/redis_sync_lambda.zip"
39+
40+ depends_on = [null_resource. package_lambda ]
2041}
2142
2243resource "aws_lambda_function" "redis_sync_lambda" {
2344 function_name = " ${ local . short_prefix } -redis-sync-lambda"
2445 role = aws_iam_role. redis_sync_lambda_exec_role . arn
25- handler = " redis_sync.sync_handler" # Update as appropriate
46+ handler = " src/ redis_sync.sync_handler" # Update as appropriate
2647 runtime = " python3.11"
2748 filename = data. archive_file . redis_sync_lambda_zip . output_path
2849 source_code_hash = data. archive_file . redis_sync_lambda_zip . output_base64sha256
0 commit comments