diff --git a/main.tf b/main.tf index af047164..cece522b 100644 --- a/main.tf +++ b/main.tf @@ -96,6 +96,8 @@ resource "aws_s3_bucket_object" "lambda_package" { storage_class = var.s3_object_storage_class tags = merge(var.tags, var.s3_object_tags) + + depends_on = [null_resource.archive] } resource "aws_lambda_provisioned_concurrency_config" "current_version" { diff --git a/package.py b/package.py index 666a5848..e58742e8 100644 --- a/package.py +++ b/package.py @@ -269,13 +269,19 @@ def str_int_to_timestamp(s): logger.info("creating '%s' archive", zip_filename) - with zipfile.ZipFile(zip_filename, "w", compression) as zf: - for base_dir in base_dirs: - logger.info("adding content of directory '%s'", base_dir) - with cd(base_dir, silent=True): - for path in emit_dir_files('.'): - logger.info("adding '%s'", path) - write(zf, path, path, date_time=date_time) + tmp_zip_filename = '{}.tmp'.format(zip_filename) + try: + with zipfile.ZipFile(tmp_zip_filename, "w", compression) as zf: + for base_dir in base_dirs: + logger.info("adding content of directory '%s'", base_dir) + with cd(base_dir, silent=True): + for path in emit_dir_files('.'): + logger.info("adding '%s'", path) + write(zf, path, path, date_time=date_time) + except Exception: + os.unlink(tmp_zip_filename) + else: + os.replace(tmp_zip_filename, zip_filename) return zip_filename diff --git a/package.tf b/package.tf index 58da156b..dd4c3851 100644 --- a/package.tf +++ b/package.tf @@ -37,7 +37,7 @@ resource "local_file" "archive_plan" { content = data.external.archive_prepare[0].result.build_plan filename = data.external.archive_prepare[0].result.build_plan_filename directory_permission = "0755" - file_permission = "0664" + file_permission = "0644" } # Build the zip archive whenever the filename changes.