/** * # LambdaZipBuilder * * Download pip packages and create ./lambda_layer.zip * Optionally upload archive to s3 bucket * */ resource "null_resource" "pip_download" { provisioner "local-exec" { interpreter = ["/bin/bash", "-c"] command = "${var.pip_path} install --only-binary=all --target /tmp/LambdaZipBuilder/python ${var.pip_packages}" } triggers = { date = timestamp() } } resource "null_resource" "remove_temp_downloads" { depends_on = [data.archive_file.layer1] provisioner "local-exec" { interpreter = ["/bin/bash", "-c"] command = "rm -rf /tmp/LambdaZipBuilder || true" } triggers = { cleanup = data.archive_file.layer1.output_base64sha256 } } data "archive_file" "layer1" { depends_on = [null_resource.pip_download] type = "zip" source_dir = "/tmp/LambdaZipBuilder" output_path = "lambda_layer.zip" } resource "aws_s3_object" "object" { count = var.upload_archive_to_s3 ? 1 : 0 bucket = var.s3_bucket_name key = "LambdaZipBuilder-${sha256(var.pip_packages)}.zip" source = data.archive_file.layer1.output_path checksum_algorithm = "SHA256" source_hash = data.archive_file.layer1.output_base64sha256 }