I'm trying to run a aws lambda function with python
this is my code:
import boto3
import xlrd
import re
from PIL import Image
source_bucket = "general"
destination_bucket = "sarit-sh-filtered-images"
# Get the bucket and object key from the Event
# bucket = event['Records'][0]['s3']['bucket']['name']
# key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'])
def remove_nonalfabetic(name):
clean_name = re.sub("[^a-zA-Z]+", "", name)
return clean_name
def get_employees_list(excel_file):
book = xlrd.open_workbook(excel_file)
employees_list = book.sheet_by_name('names').col_values(0,1)
return employees_list
def add_logo(employee_pic,logo):
mimage = Image.open(employee_pic)
limage = Image.open(logo)
# resize logo
wsize = int(min(mimage.size[0], mimage.size[1]) * 0.25)
wpercent = (wsize / float(limage.size[0]))
hsize = int((float(limage.size[1]) * float(wpercent)))
simage = limage.resize((wsize, hsize))
mbox = mimage.getbbox()
sbox = simage.getbbox()
# right bottom corner
box = (mbox[2] - sbox[2], mbox[3] - sbox[3])
mimage.paste(simage, box)
mimage.save(employee_pic)
def lambda_handler(event, context):
s3 = boto3.resource('s3')
bucket = s3.Bucket(source_bucket)
dest_bucket = s3.Bucket(destination_bucket)
employees_list = get_employees_list('employees.xlsx')
for obj in bucket.objects.filter(Prefix=source_bucket+'/',Delimiter='/',Suffix='.png'):
dest_key = obj.key
employees_name = remove_nonalfabetic(obj.name)
print(dest_key , employees_name)
if employees_name in employees_list:
s3.Object(dest_bucket.employees_name, dest_key).copy_from(CopySource = {'Bucket': obj.bucket_name, 'Key': obj.key})
when i'm trying to test this function im getting an error:
Unable to import module 'lambda_function': No module named xlrd
the function is running inline, no files or zip
can you please help me solve this issue ? thanks
xlrd is not a standard library in AWS lambda. you need to create a deployment package with virtualenv
https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With