aws / aws-lambda-builders

Python library to compile, build & package AWS Lambda functions for several runtimes & framework
Apache License 2.0
338 stars 139 forks source link

Allow packaging shared object files in Python projects #115

Open divergentdave opened 5 years ago

divergentdave commented 5 years ago

Description:

I'm working on a Python project that indirectly uses a native library through ctypes, so I need to supply the library, libspatialindex.so, in the Lambda function's package. However, when I run sam build, the file does not get copied into the output. It looks like this is due to the EXCLUDED_FILES list for PythonPipWorkflow.

Steps to reproduce the issue:

  1. Place a file ending in .so in the directory pointed to by CodeUri
  2. Run sam build

Observed result: The file should be copied into .aws-sam/build/FunctionName/

Expected result: The file is missing

Additional environment details (Ex: Windows, Mac, Amazon Linux etc) I am using SAM CLI version 0.16.0 on Debian Stretch

ingomueller-net commented 5 years ago

I also need this functionality.

ingomueller-net commented 5 years ago

As a workaround, you can create a file called sitecustomize.py with the following content:

from aws_lambda_builders.workflows.python_pip.workflow import PythonPipWorkflow
PythonPipWorkflow.EXCLUDED_FILES = tuple(x for x in PythonPipWorkflow.EXCLUDED_FILES if x != "*.so")

This file will be executed when the Python interpreter starts, before it opens the interactive terminal or runs the script. It will search for a file with that name in the site-packages directories, which includes the working directory (so place the file there). Similarly, some other site-specific configuration hook can be used to patch the patterns of excluded files.

carpnick commented 1 year ago

This needs to be exposed in AWS SAM to support other tools like - the AWS cfn tool set. - IE - https://github.com/aws-cloudformation/cloudformation-cli-python-plugin

Directly related to this issue - https://github.com/aws-cloudformation/cloudformation-cli-python-plugin/issues/247