Warning
I think this is still kinda broken but i'm open-sourcing it in case you feel like using it, breaking it, or fixing it
Turn any Python function into an AWS Lambda with a single decorator. Automatically deploys, updates, and tears down remote Lambdas — all from your local Python code.
@lambda_yeet(...)
decorator auto-deploys functions to AWS Lambda- Detects code changes and re-uploads transparently
- Serializes complex Python functions using
cloudpickle
(globals, closures, etc.) - Supports custom memory, timeout, and pip dependencies
lambda_delete("function-name")
removes deployed Lambda- Uses
uv
for fast packaging and lightweight virtualenvs
uv venv
uv pip install -e .
Requires:
- Python 3.8+
- AWS credentials configured (via
~/.aws/credentials
or environment variables) - AWS Lambda + IAM permissions
from cloudyeet import lambda_yeet
@lambda_yeet("multiply-far-away")
def remote_multiply(x, y):
return x * y
# Call it — executes in AWS Lambda!
print(remote_multiply(6, 7)) # ➜ 42
# Tear down the Lambda when you're done
lambda_delete("multiply-far-away")
Wrap your function with deployment metadata.
Arguments:
Param | Type | Description |
---|---|---|
function_name |
str |
AWS Lambda function name |
timeout_sec |
int |
Lambda timeout in seconds (default: 60 ) |
memory_mb |
int |
Lambda memory in MB (default: 128 ) |
requirements |
list[str] |
Optional pip dependencies installed via uv |
Tears down the corresponding Lambda function and clears local registry.
lambda_delete("multiply-far-away")
You need permission to:
lambda:CreateFunction
,lambda:UpdateFunctionCode
,lambda:DeleteFunction
iam:CreateRole
,iam:AttachRolePolicy
, etc.
The package will create a role named CloudYeetExecutionRole
if it doesn’t exist yet.
- Your function is serialized using
cloudpickle
- A small
lambda_handler
is generated that unpickles and runs it - Packaged using
uv
and deployed viaboto3
- When the wrapped function is called, the Lambda is invoked with
args
/kwargs
Functions are tracked by hash. When you change your function, it's re-uploaded. To manually delete:
lambda_delete("your-function-name")
cloudyeet/
├── cloudyeet/
│ ├── __init__.py
│ └── core.py
├── pyproject.toml
└── README.md
# Function that needs S3 access
@lambda_yeet(
function_name="s3-processor",
services=["s3"],
timeout_sec=30
)
def process_s3_file(bucket: str, key: str):
# Your function can now access S3
pass
# Function that needs multiple services
@lambda_yeet(
function_name="multi-service",
services=["s3", "sqs", "dynamodb"],
memory_mb=256
)
def complex_processor():
# Function has access to S3, SQS, and DynamoDB
pass
Apache 2. Yeet responsibly.