/** * # LambdaLayer * * Download python packages and create lambda layer * * ## Notes * Packages need to be placed under a python/ subdirectory. * See https://docs.aws.amazon.com/lambda/latest/dg/packaging-layers.html */ # build python package zip file module "lambda_archive" { source = "../modules/compute/LambdaZipBuilder" pip_packages = "pandas numpy pytz openpyxl" upload_archive_to_s3 = true s3_bucket_name = module.s3.s3_bucket_id pip_path = "/my/work/xpk-git/venv314/bin/pip3" } # create lambda layer resource "aws_lambda_layer_version" "pandas" { description = "Python packages pandas numpy pytz openpyxl" s3_bucket = module.s3.s3_bucket_id s3_key = module.lambda_archive.s3_object_key source_code_hash = module.lambda_archive.s3_object_hash layer_name = "py_packages" compatible_runtimes = ["python3.13"] } # s3 bucket required for uploading python package zip module "s3" { source = "terraform-aws-modules/s3-bucket/aws" version = "5.10.0" bucket = "lab-lambdalayer-${random_uuid.this.result}" server_side_encryption_configuration = { rule = { bucket_key_enabled = true apply_server_side_encryption_by_default = { sse_algorithm = "aws:kms" kms_master_key_id = "alias/aws/s3" } } } attach_deny_insecure_transport_policy = true block_public_policy = true force_destroy = true } resource "random_uuid" "this" {}