When I worked on this I used this article as a reference: https://serverless.com/blog/serverless-python-packaging/ and also ended up with a huge image. What that article didn't mention is that the virtual environment folder should be excluded in the serverless config file, as the runtime is provided by boto3. So adding:
package:
exclude:
- venv/
would reduce the size considerably (to 50 MB in my case)
package: exclude: - venv/
would reduce the size considerably (to 50 MB in my case)