53 lines
1.5 KiB
Terraform
53 lines
1.5 KiB
Terraform
/**
|
|
* # 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" {} |