diff options
Diffstat (limited to 'terraform')
| -rw-r--r-- | terraform/lambda.tf | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/terraform/lambda.tf b/terraform/lambda.tf index 72d1306..658b8c8 100644 --- a/terraform/lambda.tf +++ b/terraform/lambda.tf @@ -81,3 +81,38 @@ resource "aws_lambda_function" "load_lambda" { depends_on = [aws_s3_object.load_lambda_code] } + +locals { + layer_dir = "${path.module}/../python" + requirements = "${path.module}/../requirements.txt" + layer_zip = "${path.module}/../layer.zip" +} + +resource "null_resource" "prepare_layer" { + triggers = { + requirements_hash = filesha1(local.requirements) + } + provisioner "local-exec" { + command = <<EOT + mkdir -p ${local.layer_dir}/lib/python3.8/site-packages/ + pip install -r ${local.requirements} -t ${local.layer_dir}/lib/python3.11/site-packages/ + cd ${local.layer_dir} && zip -r ${local.layer_zip} . + EOT +} + } + +resource "aws_s3_object" "layer_zip" { + bucket = aws_s3_bucket.lambda_code_bucket.bucket + key = "layer.zip" + source = local.layer_zip + depends_on = [null_resource.prepare_layer] +} + +resource "aws_lambda_layer_version" "lambda_layer" { + layer_name = "lambda_layer" + compatible_runtimes = ["python3.11"] + s3_bucket = aws_s3_bucket.lambda_code_bucket.bucket + s3_key = aws_s3_object.layer_zip.key + skip_destroy = true + depends_on = [aws_s3_object.layer_zip] +}
\ No newline at end of file |
