awslabs / awslabs/aws-lambda-powershell-runtime
Compress runtime/modules to reduce deployment package unzipped size
- Dominant language
- PowerShell
- Stars
- 65
- Forks
- 21
- PR merge metrics
- No merged PRs in 30d
Description
AWS Lambda limits ZIP deployment packages to 250 MB on-disk. The Linux PowerShell release builds are ~170 MB in the current release, which takes up ~70% of that cap. (Community members' attempts at producing "slim" PowerShell containers only reduce sizes by ~30MB, which isn't a ton in broader context.)
Pure PowerShell script modules are generally quite small, but compiled CLR module assemblies or autogenerated modules (e.g. `Microsoft.Graph.*`, `Az.*`, `AWS.Tools.*`) can get very large.
The current architecture only allows for ~80MB of module dependencies - `AWS.Tools.S3` and `Microsoft.Graph.Users` (with respective dependencies) breaches the 250MB cap.
Compressing the PowerShell runtime itself would:
* Free up >100MB of deployment package size (172MB vs 66 MB)
* Unblock build artifact verification (PowerShell publishes SHAs of release artifacts)
Supporting compressed module dependencies (e.g. `/opt/modules-packed.zip` or `/opt/modules-packed/*.nupkg` gets unpacked to `/tmp/modules-unpacked` and added to PSModulePath) could help the situation as well.
Contributor guide
Research direction
Start by reviewing the Linux PowerShell release packaging and how module dependencies are included in the deployment ZIP. Compare the current 172 MB artifact with the proposed compressed runtime or packed modules, and consider the AWS Lambda /opt and /tmp paths mentioned. Done means the release artifact is substantially smaller while module dependencies remain available and artifact verification is unblocked.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, powershell
- Domain
- build-system, cloud
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100