lambdafaker


Namelambdafaker JSON
Version 1.0.0 PyPI version JSON
download
home_pageNone
SummaryA Python package to invoke your Aws Lambda function with fake payload
upload_time2024-03-21 16:35:47
maintainerNone
docs_urlNone
authorNecati Arslan
requires_pythonNone
licenseNone
keywords
VCS
bugtrack_url
requirements certifi charset-normalizer docutils faker-education idna importlib-metadata jaraco.classes keyring markdown-it-py mdurl more-itertools nh3 pkginfo pygments readme-renderer requests requests-toolbelt rfc3986 rich twine urllib3 zipp boto3 botocore faker jmespath python-dateutil pyyaml s3transfer six
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Lambda Faker
lambdafaker is a versatile Python package that empowers you to effortlessly create realistic but synthetic payload data and trigger your lambda function with it. If you need to generate test data for software development, this tool simplifies the process with an intuitive schema definition in YAML format.

### Key Features
**Schema Definition:** Define your target schema using a simple YAML file. Specify the structure of your lambda payload attribute names and fake data generation code.

**Faker and Randomization:** Leverage the power of the Faker library and random data generation to create authentic-looking fake data that mimics real-world scenarios.

### Installation
```bash 
pip install lambdafaker
```

### Sample Yaml File
```
version: 1
config:
  locale: en_US                 # faker locale Default:en_US
  on_error: RAISE_ERROR         # RAISE_ERROR, SKIP Default:RAISE_ERROR
  python_import:                # Optional, list of python packages to use in data generation
    - datetime
aws:
  region: us-east-1
  credentials_profile: default  #the profile name in your local .aws/config file Default:default
lambda_function:
  function_name: my_function
  invocation_count: 10          # Optional Default:1
  invocation_type: Event        # Event / RequestResponse Default:Event
  batch: 1                      # Optional Default:1
  sleep: 1000                   # Optional Default:0 No Sleep
  payload:
    first_name: fake.first_name()
    last_name: fake.last_name()
    is_alive: fake.pybool()
    age: fake.random_int(18, 90)
    dob: fake.date_of_birth()
    address:
      street_address: fake.street_address()
      city: fake.city()
      state: fake.state_abbr()
      postal_code: fake.postcode()
    phone_numbers:
      - type: "\"home\""
        number: fake.phone_number()
      - type: "\"office\""
        number: fake.phone_number()
    children:
      - fake.first_name()
      - fake.first_name()
      - fake.first_name()
```

### Sample Code
```python
from lambdafaker import lambdafaker

lambdafaker.invoke_lambda("tests/test_function.yaml")
```

### Sample CLI Command
You can use lambdafaker in your terminal for adhoc needs or shell script to automate lambda function invocation. \
Faker custom providers and custom functions are not supported in CLI.
```bash
lambdafaker --config test_function.yaml
```


### Custom Functions and Faker Providers
With Lambda Faker, you have the flexibility to provide your own custom functions to generate column data. This advanced feature empowers developers to create custom fake data generation logic that can pull data from a database, API, file, or any other source as needed. You can also supply multiple functions in a list, allowing for even more versatility. The custom function you provide should return a single value, giving you full control over your synthetic data generation.

```python
from lambdafaker import lambdafaker
from faker import Faker
from faker_education import SchoolProvider #import custom faker provider

fake = Faker()
def get_level():
    return f"level {fake.random_int(1, 5)}"


lambdafaker.invoke_lambda("test_function.yaml", fake_provider=SchoolProvider, custom_function=get_level)
#multiple fake provider or custom function in a list is also works
```
Add get_level() function and custom faker provider to your yaml file
```
version: 1
lambda_function:
  function_name: my_function
  payload:
    first_name: fake.first_name()
    last_name: fake.last_name()
    is_alive: fake.pybool()
    age: fake.random_int(18, 90)
    dob: fake.date_of_birth()
    level: get_level()            # custom function
    school: fake.school_name()    # customer faker provider
```


### Faker Functions List
https://faker.readthedocs.io/en/master/providers.html#

### Bug Report & New Feature Request
https://github.com/necatiarslan/aws-lambda-faker/issues/new


### Todo
- Aws Profile support

### Nice To Have
- 

Follow me on linkedin to get latest news \
https://www.linkedin.com/in/necati-arslan/

Thanks, \
Necati ARSLAN \
necatia@gmail.com

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "lambdafaker",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "Necati Arslan",
    "author_email": "necatia@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/9a/95/ff6d5717cc199de98c455917ebfd51af400f8a20527f46a4d2590362d0f2/lambdafaker-1.0.0.tar.gz",
    "platform": null,
    "description": "# Lambda Faker\nlambdafaker is a versatile Python package that empowers you to effortlessly create realistic but synthetic payload data and trigger your lambda function with it. If you need to generate test data for software development, this tool simplifies the process with an intuitive schema definition in YAML format.\n\n### Key Features\n**Schema Definition:** Define your target schema using a simple YAML file. Specify the structure of your lambda payload attribute names and fake data generation code.\n\n**Faker and Randomization:** Leverage the power of the Faker library and random data generation to create authentic-looking fake data that mimics real-world scenarios.\n\n### Installation\n```bash \npip install lambdafaker\n```\n\n### Sample Yaml File\n```\nversion: 1\nconfig:\n  locale: en_US                 # faker locale Default:en_US\n  on_error: RAISE_ERROR         # RAISE_ERROR, SKIP Default:RAISE_ERROR\n  python_import:                # Optional, list of python packages to use in data generation\n    - datetime\naws:\n  region: us-east-1\n  credentials_profile: default  #the profile name in your local .aws/config file Default:default\nlambda_function:\n  function_name: my_function\n  invocation_count: 10          # Optional Default:1\n  invocation_type: Event        # Event / RequestResponse Default:Event\n  batch: 1                      # Optional Default:1\n  sleep: 1000                   # Optional Default:0 No Sleep\n  payload:\n    first_name: fake.first_name()\n    last_name: fake.last_name()\n    is_alive: fake.pybool()\n    age: fake.random_int(18, 90)\n    dob: fake.date_of_birth()\n    address:\n      street_address: fake.street_address()\n      city: fake.city()\n      state: fake.state_abbr()\n      postal_code: fake.postcode()\n    phone_numbers:\n      - type: \"\\\"home\\\"\"\n        number: fake.phone_number()\n      - type: \"\\\"office\\\"\"\n        number: fake.phone_number()\n    children:\n      - fake.first_name()\n      - fake.first_name()\n      - fake.first_name()\n```\n\n### Sample Code\n```python\nfrom lambdafaker import lambdafaker\n\nlambdafaker.invoke_lambda(\"tests/test_function.yaml\")\n```\n\n### Sample CLI Command\nYou can use lambdafaker in your terminal for adhoc needs or shell script to automate lambda function invocation. \\\nFaker custom providers and custom functions are not supported in CLI.\n```bash\nlambdafaker --config test_function.yaml\n```\n\n\n### Custom Functions and Faker Providers\nWith Lambda Faker, you have the flexibility to provide your own custom functions to generate column data. This advanced feature empowers developers to create custom fake data generation logic that can pull data from a database, API, file, or any other source as needed. You can also supply multiple functions in a list, allowing for even more versatility. The custom function you provide should return a single value, giving you full control over your synthetic data generation.\n\n```python\nfrom lambdafaker import lambdafaker\nfrom faker import Faker\nfrom faker_education import SchoolProvider #import custom faker provider\n\nfake = Faker()\ndef get_level():\n    return f\"level {fake.random_int(1, 5)}\"\n\n\nlambdafaker.invoke_lambda(\"test_function.yaml\", fake_provider=SchoolProvider, custom_function=get_level)\n#multiple fake provider or custom function in a list is also works\n```\nAdd get_level() function and custom faker provider to your yaml file\n```\nversion: 1\nlambda_function:\n  function_name: my_function\n  payload:\n    first_name: fake.first_name()\n    last_name: fake.last_name()\n    is_alive: fake.pybool()\n    age: fake.random_int(18, 90)\n    dob: fake.date_of_birth()\n    level: get_level()            # custom function\n    school: fake.school_name()    # customer faker provider\n```\n\n\n### Faker Functions List\nhttps://faker.readthedocs.io/en/master/providers.html#\n\n### Bug Report & New Feature Request\nhttps://github.com/necatiarslan/aws-lambda-faker/issues/new\n\n\n### Todo\n- Aws Profile support\n\n### Nice To Have\n- \n\nFollow me on linkedin to get latest news \\\nhttps://www.linkedin.com/in/necati-arslan/\n\nThanks, \\\nNecati ARSLAN \\\nnecatia@gmail.com\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Python package to invoke your Aws Lambda function with fake payload",
    "version": "1.0.0",
    "project_urls": {
        "Documentation": "https://github.com/necatiarslan/aws-lambda-faker/blob/main/README.md",
        "Source": "https://github.com/necatiarslan/aws-lambda-faker"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "af2dbeab89c6ab9445c1fb788bba9c7a0bb7b4e2e103bd96b2c3c3202ea61609",
                "md5": "f40fcbe72181f55232095ef782a9ec0c",
                "sha256": "ae08ff5e065e59129340323dc728bd13282202a34d5f9429aaecad11d2f2e6c7"
            },
            "downloads": -1,
            "filename": "lambdafaker-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f40fcbe72181f55232095ef782a9ec0c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 11898,
            "upload_time": "2024-03-21T16:35:44",
            "upload_time_iso_8601": "2024-03-21T16:35:44.716281Z",
            "url": "https://files.pythonhosted.org/packages/af/2d/beab89c6ab9445c1fb788bba9c7a0bb7b4e2e103bd96b2c3c3202ea61609/lambdafaker-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9a95ff6d5717cc199de98c455917ebfd51af400f8a20527f46a4d2590362d0f2",
                "md5": "a9571f3600a1dad5393b27dc4acb49db",
                "sha256": "ca15863e08fcc7a250c6c41bd87e27719122de92c46ce37217894b5b817cdef5"
            },
            "downloads": -1,
            "filename": "lambdafaker-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a9571f3600a1dad5393b27dc4acb49db",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 12186,
            "upload_time": "2024-03-21T16:35:47",
            "upload_time_iso_8601": "2024-03-21T16:35:47.117591Z",
            "url": "https://files.pythonhosted.org/packages/9a/95/ff6d5717cc199de98c455917ebfd51af400f8a20527f46a4d2590362d0f2/lambdafaker-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-21 16:35:47",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "necatiarslan",
    "github_project": "aws-lambda-faker",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "certifi",
            "specs": [
                [
                    "==",
                    "2024.2.2"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.3.2"
                ]
            ]
        },
        {
            "name": "docutils",
            "specs": [
                [
                    "==",
                    "0.20.1"
                ]
            ]
        },
        {
            "name": "faker-education",
            "specs": [
                [
                    "==",
                    "1.2.1"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.6"
                ]
            ]
        },
        {
            "name": "importlib-metadata",
            "specs": [
                [
                    "==",
                    "7.1.0"
                ]
            ]
        },
        {
            "name": "jaraco.classes",
            "specs": [
                [
                    "==",
                    "3.3.1"
                ]
            ]
        },
        {
            "name": "keyring",
            "specs": [
                [
                    "==",
                    "24.3.1"
                ]
            ]
        },
        {
            "name": "markdown-it-py",
            "specs": [
                [
                    "==",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "mdurl",
            "specs": [
                [
                    "==",
                    "0.1.2"
                ]
            ]
        },
        {
            "name": "more-itertools",
            "specs": [
                [
                    "==",
                    "10.2.0"
                ]
            ]
        },
        {
            "name": "nh3",
            "specs": [
                [
                    "==",
                    "0.2.15"
                ]
            ]
        },
        {
            "name": "pkginfo",
            "specs": [
                [
                    "==",
                    "1.10.0"
                ]
            ]
        },
        {
            "name": "pygments",
            "specs": [
                [
                    "==",
                    "2.17.2"
                ]
            ]
        },
        {
            "name": "readme-renderer",
            "specs": [
                [
                    "==",
                    "43.0"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "==",
                    "2.31.0"
                ]
            ]
        },
        {
            "name": "requests-toolbelt",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "rfc3986",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "rich",
            "specs": [
                [
                    "==",
                    "13.7.1"
                ]
            ]
        },
        {
            "name": "twine",
            "specs": [
                [
                    "==",
                    "5.0.0"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    "==",
                    "2.2.1"
                ]
            ]
        },
        {
            "name": "zipp",
            "specs": [
                [
                    "==",
                    "3.18.1"
                ]
            ]
        },
        {
            "name": "boto3",
            "specs": [
                [
                    "==",
                    "1.34.67"
                ]
            ]
        },
        {
            "name": "botocore",
            "specs": [
                [
                    "==",
                    "1.34.67"
                ]
            ]
        },
        {
            "name": "faker",
            "specs": [
                [
                    "==",
                    "24.3.0"
                ]
            ]
        },
        {
            "name": "jmespath",
            "specs": [
                [
                    "==",
                    "1.0.1"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "==",
                    "2.9.0.post0"
                ]
            ]
        },
        {
            "name": "pyyaml",
            "specs": [
                [
                    "==",
                    "6.0.1"
                ]
            ]
        },
        {
            "name": "s3transfer",
            "specs": [
                [
                    "==",
                    "0.10.1"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.16.0"
                ]
            ]
        }
    ],
    "lcname": "lambdafaker"
}
        
Elapsed time: 1.27641s