Project to process audio files with Audio Program Generator on AWS lambda.
Steps taken:
Create a virtual environment: python3.9 -m venv venv && source venv/bin/activate
.
Pip install requirements as per file: pip install -r requirements.txt
.
Zip the env up for upload to lambda:
cd venv/lib/python3.9/site-packages
zip -r9 lambda.pkg.zip *
mv lambda.pkg.zip ../../../../
cd ../../../..
And add the actual lambda script:
zip -g lambda.pkg.zip lambda.py
Now create the lambda function on AWS uploading the generated lambda.pkg.zip
file.
Add this ffmpeg layer via this option. This got me this ARN: arn:aws:lambda:us-east-2:825951402381:layer:ffmpeg:1
When doing so you also need to set PYTHONPATH
to $PYTHONPATH:/opt/python
so ffprobe
gets detected, that is under Lambda Configuration > Env variables
I also gave the lambda 256 MB and a timeout of 2 minutes, and changed Handler to lambda.lambda_handler
under Runtime settings because my script module is lambda.py
.
Run a test event on Lambda. No need for payload, lambda.py
just defaults to static input files if nothing is provided.
(venv) $ python lambda.py
100%|| 3/3 [00:00<00:00, 10.22it/s]
{'status_code': 200, 'result_file': 'b64_encoded_audio_file_string'}