{
"info": {
"author": "Adrian Hornsby",
"author_email": "hornsby.adrian@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Topic :: Software Development :: Libraries"
],
"description": "\nChaos Injection for AWS Lambda - chaos_lambda\n======================================================\n\n|docs| |issues| |Maintenance| |Pypi| |Travis| |Coveralls| |twitter|\n\n.. |docs| image:: https://readthedocs.org/projects/aws-lambda-chaos-injection/badge/?version=latest\n :target: https://aws-lambda-chaos-injection.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. |twitter| image:: https://img.shields.io/twitter/url/https/github.com/adhorn/aws-lambda-chaos-injection?style=social\n :alt: Twitter\n :target: https://twitter.com/intent/tweet?text=Wow:&url=https%3A%2F%2Fgithub.com%2Fadhorn%2Faws-lambda-chaos-injection\n\n.. |issues| image:: https://img.shields.io/github/issues/adhorn/aws-lambda-chaos-injection\n :alt: Issues\n\n.. |Maintenance| image:: https://img.shields.io/badge/Maintained%3F-yes-green.svg\n :alt: Maintenance\n :target: https://GitHub.com/adhorn/aws-lambda-chaos-injection/graphs/commit-activity\n\n.. |Pypi| image:: https://badge.fury.io/py/chaos-lambda.svg\n :target: https://badge.fury.io/py/chaos-lambda\n\n.. |Travis| image:: https://api.travis-ci.org/adhorn/aws-lambda-chaos-injection.svg?branch=master\n :target: https://travis-ci.org/adhorn/aws-lambda-chaos-injection\n\n.. |Coveralls| image:: https://coveralls.io/repos/github/adhorn/aws-lambda-chaos-injection/badge.svg?branch=master\n :target: https://coveralls.io/github/adhorn/aws-lambda-chaos-injection?branch=master\n\n``chaos_lambda`` is a small library injecting chaos into `AWS Lambda\n`_.\nIt offers simple python decorators to do `delay`, `exception` and `statusCode` injection\nand a Class to add `delay` to any 3rd party dependencies called from your function.\nThis allows to conduct small chaos engineering experiments for your serverless application\nin the `AWS Cloud `_.\n\n* Support for Latency injection using ``delay``\n* Support for Exception injection using ``exception_msg``\n* Support for HTTP Error status code injection using ``error_code``\n* Using for SSM Parameter Store to control the experiment using ``isEnabled``\n* Support for adding rate of failure using ``rate``. (Default rate = 1)\n* Per Lambda function injection control using Environment variable (``CHAOS_PARAM``)\n\nInstall\n--------\n.. code:: shell\n\n pip install chaos-lambda\n\n\nExample\n--------\n.. code:: python\n\n # function.py\n\n import os\n from chaos_lambda import inject_delay, inject_exception, inject_statuscode\n\n # this should be set as a Lambda environment variable\n os.environ['CHAOS_PARAM'] = 'chaoslambda.config'\n\n @inject_exception\n def handler_with_exception(event, context):\n return {\n 'statusCode': 200,\n 'body': 'Hello from Lambda!'\n }\n\n\n @inject_exception(exception_type=TypeError, exception_msg='foobar')\n def handler_with_exception_arg(event, context):\n return {\n 'statusCode': 200,\n 'body': 'Hello from Lambda!'\n }\n\n @inject_exception(exception_type=ValueError)\n def handler_with_exception_arg_2(event, context):\n return {\n 'statusCode': 200,\n 'body': 'Hello from Lambda!'\n }\n\n\n @inject_statuscode\n def handler_with_statuscode(event, context):\n return {\n 'statusCode': 200,\n 'body': 'Hello from Lambda!'\n }\n\n @inject_statuscode(error_code=400)\n def handler_with_statuscode_arg(event, context):\n return {\n 'statusCode': 200,\n 'body': 'Hello from Lambda!'\n }\n\n @inject_delay\n def handler_with_delay(event, context):\n return {\n 'statusCode': 200,\n 'body': 'Hello from Lambda!'\n }\n\n @inject_delay(delay=1000)\n def handler_with_delay_arg(event, context):\n return {\n 'statusCode': 200,\n 'body': 'Hello from Lambda!'\n }\n\n\n @inject_delay(delay=0)\n def handler_with_delay_zero(event, context):\n return {\n 'statusCode': 200,\n 'body': 'Hello from Lambda!'\n }\n\n\nWhen excecuted, the Lambda function, e.g ``handler_with_exception('foo', 'bar')``, will produce the following result:\n\n.. code:: shell\n\n exception_msg from config I really failed seriously with a rate of 1\n corrupting now\n Traceback (most recent call last):\n File \"\", line 1, in \n File \"/.../chaos_lambda.py\", line 199, in wrapper\n raise Exception(exception_msg)\n Exception: I really failed seriously\n\nConfiguration\n-------------\nThe configuration for the failure injection is stored in the `AWS SSM Parameter Store\n`_ and accessed at runtime by the ``get_config()``\nfunction:\n\n.. code:: json\n\n {\n \"isEnabled\": true,\n \"delay\": 400,\n \"error_code\": 404,\n \"exception_msg\": \"I really failed seriously\",\n \"rate\": 1\n }\n\nTo store the above configuration into SSM using the `AWS CLI `_ do the following:\n\n.. code:: shell\n\n aws ssm put-parameter --region eu-north-1 --name chaoslambda.config --type String --overwrite --value \"{ \"delay\": 400, \"isEnabled\": true, \"error_code\": 404, \"exception_msg\": \"I really failed seriously\", \"rate\": 1 }\"\n\nAWS Lambda will need to have `IAM access to SSM `_.\n\n.. code:: json\n\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ssm:DescribeParameters\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ssm:GetParameters\",\n \"ssm:GetParameter\"\n ],\n \"Resource\": \"arn:aws:ssm:eu-north-1:12345678910:parameter/chaoslambda.config\"\n }\n ]\n }\n\n\nSupported Decorators:\n---------------------\n``chaos_lambda`` currently supports the following decorators:\n\n* `@inject_delay` - add delay in the AWS Lambda execution\n* `@inject_exception` - Raise an exception during the AWS Lambda execution\n* `@inject_statuscode` - force AWS Lambda to return a specific HTTP error code\n\nand the following class:\n\n* `SessionWithDelay` - enabled to sub-classing requests library and call dependencies with delay\n\nMore information:\n-----------------\n\n\n\n`Full Documentation `_\n\n\n",
"description_content_type": "text/x-rst",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/adhorn/aws-lambda-chaos-injection",
"keywords": "chaos engineering lambda decorator aws lambda",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "chaos-lambda",
"package_url": "https://pypi.org/project/chaos-lambda/",
"platform": "",
"project_url": "https://pypi.org/project/chaos-lambda/",
"project_urls": {
"Homepage": "https://github.com/adhorn/aws-lambda-chaos-injection"
},
"release_url": "https://pypi.org/project/chaos-lambda/0.2.4/",
"requires_dist": [
"boto3",
"future",
"ssm-cache",
"requests"
],
"requires_python": "",
"summary": "Decorators and Class to inject failures into AWS Lambda functions",
"version": "0.2.4"
},
"last_serial": 5943483,
"releases": {
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "006d5c57643c80270621b400bc866b5a",
"sha256": "a3d0c9dffdedea7ac82d200b85beb40fc90edc803958c6e4e2d05e12b3b14a6d"
},
"downloads": -1,
"filename": "chaos_lambda-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "006d5c57643c80270621b400bc866b5a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 6915,
"upload_time": "2019-07-17T11:59:23",
"url": "https://files.pythonhosted.org/packages/91/a0/3f40aeb498e62196d91cff0c6942933face4fbd89bae29814a2e153eb54a/chaos_lambda-0.1.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ef55bb16ca9e9913c5a07764f0921fbc",
"sha256": "0c617e837d8a3fb5b75787a7e6415f4f55392a27daad00453eccb0985ad01df8"
},
"downloads": -1,
"filename": "chaos-lambda-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "ef55bb16ca9e9913c5a07764f0921fbc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4872,
"upload_time": "2019-07-17T11:59:26",
"url": "https://files.pythonhosted.org/packages/09/8f/d2cdd61730a385188d733f83cd0fc39b69cbd5bda6c057fc5d1f21ad42c4/chaos-lambda-0.1.2.tar.gz"
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "b94f581ab52a383d4509a5763eba09ab",
"sha256": "30c4ae594161eb5e82fd049231d1499de5000601c419c4c76f35a8a998f0d1ca"
},
"downloads": -1,
"filename": "chaos_lambda-0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b94f581ab52a383d4509a5763eba09ab",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 7354,
"upload_time": "2019-08-01T12:50:07",
"url": "https://files.pythonhosted.org/packages/be/22/64edd3eae26b72900dcf3555cc4953c6c11fe9116f88b5c250bea158ff09/chaos_lambda-0.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "946720327be68a4cb6849fb6bd7698f6",
"sha256": "277777364b3719aa9a49b43555035d9168f8304b1db39eecfbc246dda72f5170"
},
"downloads": -1,
"filename": "chaos-lambda-0.2.tar.gz",
"has_sig": false,
"md5_digest": "946720327be68a4cb6849fb6bd7698f6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5225,
"upload_time": "2019-08-01T12:50:09",
"url": "https://files.pythonhosted.org/packages/a0/a1/bf60516c8047ffb0f191935f35fa8541e5db3ccb2720066899d1bea9a453/chaos-lambda-0.2.tar.gz"
}
],
"0.2.1": [
{
"comment_text": "",
"digests": {
"md5": "5e57e59a8d4987593731f9170d4e4cff",
"sha256": "237952cc96c2e36dbd8b7b65f6adffff572c1bc3f4872c65b9836ef068d73e14"
},
"downloads": -1,
"filename": "chaos_lambda-0.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5e57e59a8d4987593731f9170d4e4cff",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 7396,
"upload_time": "2019-08-05T07:36:41",
"url": "https://files.pythonhosted.org/packages/ec/25/2e5ff0e56d353047e106433aa8b5139b94cf44aa05d9571095b21a48869a/chaos_lambda-0.2.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "c064912eb776ebfae82086ca6e8d02c7",
"sha256": "9060160d91ebae8a34560dc37374fc6298fa1f5724ce9c5f727778fe93d7b793"
},
"downloads": -1,
"filename": "chaos-lambda-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "c064912eb776ebfae82086ca6e8d02c7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5247,
"upload_time": "2019-08-05T07:36:43",
"url": "https://files.pythonhosted.org/packages/9f/8b/440c3e98eff3c1c839fcbc82fe3809aa113ea5b2ac77fa3ce707c81fc64f/chaos-lambda-0.2.1.tar.gz"
}
],
"0.2.2": [
{
"comment_text": "",
"digests": {
"md5": "9a3072243de689313ff71afcda896c6d",
"sha256": "1c5a5ba96ffe4027fcec20b2acc727500d23edefea26c5ce3fb6b1d604f7e7b8"
},
"downloads": -1,
"filename": "chaos_lambda-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9a3072243de689313ff71afcda896c6d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 8074,
"upload_time": "2019-09-15T14:56:35",
"url": "https://files.pythonhosted.org/packages/e9/e3/a1234f67c533994543182032aea4071165fd5fb5eaf437aee94bc532370a/chaos_lambda-0.2.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "0338194b4af137f775e8304f4cf9d734",
"sha256": "3601b4b426318b82637b903494ea0a86bf3a40f7b6f97977d403653bf72529dc"
},
"downloads": -1,
"filename": "chaos-lambda-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "0338194b4af137f775e8304f4cf9d734",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5716,
"upload_time": "2019-09-15T14:56:37",
"url": "https://files.pythonhosted.org/packages/fe/76/18aca44d3641f9940616642d6ec74d9944dbc2c30f7db09fcd12322f83a6/chaos-lambda-0.2.2.tar.gz"
}
],
"0.2.3": [
{
"comment_text": "",
"digests": {
"md5": "a88cf6f57ccd3ab0f4fa76b38f5cf329",
"sha256": "0c86f1f263be24151698c028d075eaa6c41bcc048ed0320828e905b0ff8929c0"
},
"downloads": -1,
"filename": "chaos_lambda-0.2.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a88cf6f57ccd3ab0f4fa76b38f5cf329",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 8090,
"upload_time": "2019-09-16T08:36:26",
"url": "https://files.pythonhosted.org/packages/06/a9/9af50e7183b8a4f7825159fed7974b447b12130bca06f1933c12130f9f10/chaos_lambda-0.2.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "6aa725e09f0966d3ba458de0f9d26ddc",
"sha256": "0eb102159c6beaee001eb3b6ff2f7adc7db41580afde06d905c6de59eb9f9367"
},
"downloads": -1,
"filename": "chaos-lambda-0.2.3.tar.gz",
"has_sig": false,
"md5_digest": "6aa725e09f0966d3ba458de0f9d26ddc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5758,
"upload_time": "2019-09-16T08:36:28",
"url": "https://files.pythonhosted.org/packages/22/b9/26cc878f2a5220d2b3625508fab5fedf92cc26a1ccaaecd22476a8e4dad5/chaos-lambda-0.2.3.tar.gz"
}
],
"0.2.4": [
{
"comment_text": "",
"digests": {
"md5": "a8d3db7c6302e7ec769c03e9c3316317",
"sha256": "6cf4d37ae93b94c93c31365564bae942f6734e7035c9d9cff490e633b571bcee"
},
"downloads": -1,
"filename": "chaos_lambda-0.2.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a8d3db7c6302e7ec769c03e9c3316317",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 8085,
"upload_time": "2019-10-08T08:03:05",
"url": "https://files.pythonhosted.org/packages/1c/b4/73407cdc408a3e6f471014cc4a9833dc5de697ea727b27c213a32f48f16d/chaos_lambda-0.2.4-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "5cc8782e205e5ff412902915e6b1ecb3",
"sha256": "2a247449cdfe5b34cb76499494ba72cf5feadf05d9af111abb1a65616e801a30"
},
"downloads": -1,
"filename": "chaos-lambda-0.2.4.tar.gz",
"has_sig": false,
"md5_digest": "5cc8782e205e5ff412902915e6b1ecb3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5768,
"upload_time": "2019-10-08T08:03:07",
"url": "https://files.pythonhosted.org/packages/64/4f/c13aa186250c4294eb758f4f0a0e440b9bb51ae17a049d0c8e6c87021b1c/chaos-lambda-0.2.4.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "a8d3db7c6302e7ec769c03e9c3316317",
"sha256": "6cf4d37ae93b94c93c31365564bae942f6734e7035c9d9cff490e633b571bcee"
},
"downloads": -1,
"filename": "chaos_lambda-0.2.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a8d3db7c6302e7ec769c03e9c3316317",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 8085,
"upload_time": "2019-10-08T08:03:05",
"url": "https://files.pythonhosted.org/packages/1c/b4/73407cdc408a3e6f471014cc4a9833dc5de697ea727b27c213a32f48f16d/chaos_lambda-0.2.4-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "5cc8782e205e5ff412902915e6b1ecb3",
"sha256": "2a247449cdfe5b34cb76499494ba72cf5feadf05d9af111abb1a65616e801a30"
},
"downloads": -1,
"filename": "chaos-lambda-0.2.4.tar.gz",
"has_sig": false,
"md5_digest": "5cc8782e205e5ff412902915e6b1ecb3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5768,
"upload_time": "2019-10-08T08:03:07",
"url": "https://files.pythonhosted.org/packages/64/4f/c13aa186250c4294eb758f4f0a0e440b9bb51ae17a049d0c8e6c87021b1c/chaos-lambda-0.2.4.tar.gz"
}
]
}