{"id":23309,"library":"aws-lambda-env-modeler","title":"AWS Lambda Environment Modeler","description":"AWS-Lambda-Env-Modeler is a Python library (version 3.0.0, release cadence: irregular) that simplifies managing and validating environment variables in AWS Lambda functions using Python dataclasses, Pydantic models, or TypedDicts. It provides decorators and base classes to parse, validate, and cache environment configuration.","status":"active","version":"3.0.0","language":"python","source_language":"en","source_url":"https://github.com/ran-isenberg/aws-lambda-env-modeler","tags":["aws","lambda","environment-variables","validation","pydantic"],"install":[{"cmd":"pip install aws-lambda-env-modeler","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Default validation backend for dataclasses","package":"pydantic","optional":true},{"reason":"Optional integration for Lambda context","package":"aws-lambda-context","optional":true}],"imports":[{"note":"v2 removed LambdaEnvModel; use BaseModel instead","wrong":"from aws_lambda_env_modeler import LambdaEnvModel","symbol":"BaseModel","correct":"from aws_lambda_env_modeler import BaseModel"},{"note":"correct import for the decorator","wrong":null,"symbol":"parse_env","correct":"from aws_lambda_env_modeler import parse_env"},{"note":"alias for BaseModel","wrong":null,"symbol":"EnvModel","correct":"from aws_lambda_env_modeler import EnvModel"}],"quickstart":{"code":"import os\nfrom aws_lambda_env_modeler import BaseModel, parse_env\n\nclass MyEnv(BaseModel):\n    table_name: str\n    stage: str = \"dev\"\n\n@parse_env(model_class=MyEnv)\ndef lambda_handler(event, context):\n    env = context.env  # or use event['env']\n    print(f\"Table: {env.table_name}, Stage: {env.stage}\")\n    return {\"statusCode\": 200}\n\n# For testing without Lambda context:\nos.environ['TABLE_NAME'] = 'my-table'\nos.environ['STAGE'] = 'prod'\nenv = MyEnv()  # directly instantiate\nprint(env.table_name)","lang":"python","description":"Define an environment model using BaseModel, then decorate your Lambda handler with @parse_env. The parsed environment is attached to the context object. Alternatively, instantiate the model directly for testing."},"warnings":[{"fix":"Upgrade to Python 3.10+ or pin to aws-lambda-env-modeler==2.1.0","message":"v3.0.0 drops Python 3.9 support (requires >=3.10). Pin to 2.1.0 if you need Python 3.9.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Replace `LambdaEnvModel` with `BaseModel` from the same package.","message":"`LambdaEnvModel` was removed in v2.0.0. Use `BaseModel` or `EnvModel` instead.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Pass `use_cache=False` to `parse_env` in tests: `@parse_env(model_class=MyEnv, use_cache=False)`.","message":"The `parse_env` decorator uses LRU caching by default (via lru_cache). This can cause stale values in tests or when environment changes.","severity":"gotcha","affected_versions":">=1.0.7"},{"fix":"Avoid changing env vars after the first invocation. If necessary, disable cache or use `force_refresh=True`.","message":"Environment variables are parsed only once per process due to caching. If you change env vars at runtime, the model will not reflect the new values.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Replace `LambdaEnvModel` with `BaseModel` or `EnvModel`.","cause":"`LambdaEnvModel` was removed in v2.0.0.","error":"AttributeError: module 'aws_lambda_env_modeler' has no attribute 'LambdaEnvModel'"},{"fix":"Use `use_cache=False` instead of `cache=False`.","cause":"The `cache` parameter was renamed to `use_cache` in v1.0.7.","error":"TypeError: parse_env() got an unexpected keyword argument 'cache'"},{"fix":"Install the latest version: `pip install --upgrade aws-lambda-env-modeler`. If on v1.x, use `from aws_lambda_env_modeler import LambdaEnvModel`.","cause":"The library is not installed or you are using an old version (<2.0.0).","error":"ImportError: cannot import name 'BaseModel' from 'aws_lambda_env_modeler'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}