{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "# Cloudlift\n\nCloudlift is built by Simpl developers to make it easier to launch dockerized\nservices in AWS ECS.\n\nCloudlift is a command-line tool for dockerized services to be deployed in AWS\nECS. It's very simple to use. That's possible because this is heavily\nopinionated. Under the hood, it is a wrapper to AWS cloudformation templates. On\ncreating/udpating a service or a cluster this creates/updates a cloudformation\nin AWS.\n\n## Demo videos\n\n- [Create Environment](https://asciinema.org/a/evsaZvW86qff0InxNlzLPMtb6)\n- [Create Service](https://asciinema.org/a/RaZb81VDmrnWg8qckWKAm98Bn)\n- [Deploy Service with image build](https://asciinema.org/a/j4A2DBjLPadbwJPvwiT6W1c2N)\n- [Deploy Service](https://asciinema.org/a/FUUJ3U2gm7U1yCcTCGjTiGBbp)\n\n## Installing cloudlift\n\n### 1. Pre-requisites\n\n- pip\n\n```sh\ncurl https://bootstrap.pypa.io/get-pip.py -o get-pip.py | python get-pip.py\n```\n\n### 2. Download and Install cloudlift\n\n```sh\ngit clone git@github.com:GetSimpl/cloudlift.git\ncd cloudlift\n./install-cloudlift.sh\n```\n\n### 2. Configure AWS\n\n```perl\naws configure\n```\n\nEnter the AWS Access Key ID, AWS Secret Access Key. You can find instructions\nhere on how to get Access Key ID and Secret Access Key here at\nhttp://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html\n\n#### Using AWS Profiles\n\nIf you are using [AWS profiles](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html), set the desired profile name in the environment before invoking Cloudlift.\n\n```sh\nAWS_DEFAULT_PROFILE= cloudlift \n```\n\nOR\n\n```sh\nexport AWS_DEFAULT_PROFILE=\ncloudlift \ncloudlift \n```\n\n## Usage\n\n### Create a new environment\n\nCreate a new environment for services to be deployed. Cloudlift creates a new\nVPC for the given CIDR and sets up the required networking infrastructure for\nservices to run in ECS.\n\n```sh\ncloudlift create_environment -e \n```\n\nThis starts a prompt for required details to create an environment, which\nincludes -\n\n- AWS region for the environment\n- VPC CIDR\n- NAT Elastic IP allocation ID\n- 2 Public Subnet CIDRs\n- 2 Private Subnet CIDRs\n- Minimum instances for cluster\n- Maximum instances for cluster\n- SSH key name\n- SNS ARN for notifications\n- AWS ACM ARN for SSL certificate\n\nOnce the configuration is saved, this is opened in the default `VISUAL` editor.\nHere configurations can be changed if required.\n\n### Update an environment\n\n```sh\ncloudlift update_environment -e \n```\n\nThis opens the environment configuration in the `VISUAL` editor. Update this to\nmake changes to the environment.\n\n### Create a new service\n\n#### 1. Upload configuration to Parameter Store\n\nDuring create_service and deployment `cloudlift` pulls the config from AWS\nParameter Store to apply it on the task definition. Configurations are stored in\npath with the convention `///`\n\n```sh\ncloudlift edit_config -e \n```\n\n _NOTE_: This is *not* required for every deployment. It's required only when\n config needs to be changed.\n\n#### 2. Create service\n\nIn the repository for the application, run -\n\n```sh\n cloudlift create_service -e \n```\n\nThis opens the `VISUAL` editor with default config similar to -\n\n```json\n {\n \"services\": {\n \"Test123\": {\n \"command\": null,\n \"http_interface\": {\n \"container_port\": 80,\n \"internal\": false,\n \"restrict_access_to\": [\n \"0.0.0.0/0\"\n ]\n },\n \"memory_reservation\": 100\n }\n }\n }\n```\n\nDefinitions -\n\n`services`: Map of all ECS services with configuration for current application\n\n`command`: Override command in Dockerfile\n\n`http_interface`: Configuration for HTTP interface if required, do not include\nthis if the services does not require a HTTP interface\n\n`container_port`: Port in which the process is exposed inside container\n\n`internal`: Scheme of loadbalancer. If internal, the loadbalancer is accessible\nonly within the VPC\n\n`restrict_access_to`: List of CIDR to which HTTP interface is restricted to.\n\n`memory_reservation`: Memory size reserved for each task in MBs. This is a soft\nlimit, i.e. at least this much memory will be available, and upto whatever\nmemory is free in running container instance. Minimum: 10 MB, Maximum: 8000 MB\n\n#### 3. Deploy service\n\n```sh\n cloudlift deploy_service -e \n```\n\n### 6. Starting shell on container instance for service\n\nYou can start a shell on a container instance which is running a task for given\napplication using the `start_session` command. One pre-requisite for this is\ninstalling the session manager plugin for `awscli`. To install session manager\nplugin follow the [guide](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html#install-plugin-macos)\n\n```sh\n cloudlift start_session -e \n```\n\nMFA code can be passed as parameter `--mfa` or you will be prompted to enter\nthe MFA code.\n\n## Contributing to cloudlift\n\n### Tests\n\nFirst level of tests have been added to assert cloudformation template generated\nvs expected one.\n\n```sh\npy.test test/deployment/\n```\n\nTo run high level integration tests\n\n```sh\npytest -s test/test_cloudlift.py\n```\n\nThis tests expects to have an access to AWS console.\nSince there's no extensive test coverage, it's better to manually test the\nimpacted areas whenever there's a code change.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/GetSimpl/cloudlift", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "cloudlift", "package_url": "https://pypi.org/project/cloudlift/", "platform": "", "project_url": "https://pypi.org/project/cloudlift/", "project_urls": { "Homepage": "https://github.com/GetSimpl/cloudlift" }, "release_url": "https://pypi.org/project/cloudlift/1.1.1/", "requires_dist": [ "boto3 (>=1.9.89)", "awscli", "certifi (==2017.7.27.1)", "cfn-flip (==1.0.3)", "chardet (==3.0.4)", "click (==6.7)", "colorclass (==2.2.0)", "dictdiffer (==0.7.0)", "docutils (==0.14)", "future (==0.16.0)", "futures (==3.1.1)", "idna (==2.6)", "jmespath (==0.9.3)", "jsonschema (==2.6.0)", "moto (==1.3.7)", "pytest (==4.0.0)", "python-dateutil (==2.6.1)", "requests (>=2.20.0)", "six (==1.10.0)", "stringcase (==1.0.6)", "terminaltables (==3.1.0)", "troposphere (>=2.4.1)" ], "requires_python": "", "summary": "Cloudlift makes it easier to launch dockerized services in AWS ECS", "version": "1.1.1" }, "last_serial": 5485422, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "1cafd055877c319a54ad59025b0215ec", "sha256": "5740f2923778018373ee7840ed636c6b1fc2561a762f1d80ae30c00d441d21a2" }, "downloads": -1, "filename": "cloudlift-1.0.0-py3.7.egg", "has_sig": false, "md5_digest": "1cafd055877c319a54ad59025b0215ec", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 100244, "upload_time": "2019-03-01T14:51:08", "url": "https://files.pythonhosted.org/packages/5b/72/4e6e5ec8e7d76e2bf93d5c2dda66222a89116beb80a3fa56742dbd8fda77/cloudlift-1.0.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "ffa23f6c40b72c7bb180262d1c65ecc4", "sha256": "5253de1b214884fcf5f795e5f1f34247d92410880e687b581cbd5d68e97db4d7" }, "downloads": -1, "filename": "cloudlift-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ffa23f6c40b72c7bb180262d1c65ecc4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43766, "upload_time": "2019-03-01T14:51:05", "url": "https://files.pythonhosted.org/packages/c0/44/dd018f9c9e9137c2aab51171fe658f631571df41dc904e647cd42462043d/cloudlift-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "229edce134316be933ec9e1f96e426c7", "sha256": "bc57f3632775a2452bdac21e16e41a0aa125a83b043498e4309679d8fa412aee" }, "downloads": -1, "filename": "cloudlift-1.0.0.tar.gz", "has_sig": false, "md5_digest": "229edce134316be933ec9e1f96e426c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33378, "upload_time": "2019-03-01T14:51:10", "url": "https://files.pythonhosted.org/packages/15/bb/b667dae3c7257ecf4b434aa3ba4ef22c770ded721bbf0e8d88427813c8c9/cloudlift-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "587981ccd952f48906377a288fa4eab1", "sha256": "f0a93d6da61658b6a86149b3f6da012f021d5ce4b7f2f7237f8e910cf577dbbe" }, "downloads": -1, "filename": "cloudlift-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "587981ccd952f48906377a288fa4eab1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43922, "upload_time": "2019-03-11T02:39:08", "url": "https://files.pythonhosted.org/packages/98/26/7b009d00fb6523a7a72de93e1d14c9d2e793baa61de6aaeda897ba574bf5/cloudlift-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a66ee2b11edc19c89f03b0daaa3832be", "sha256": "425e260a6dcc828ff8da94c42dda1a9bac0514f95009d9697fdaf5ea8d1f9715" }, "downloads": -1, "filename": "cloudlift-1.0.1.tar.gz", "has_sig": false, "md5_digest": "a66ee2b11edc19c89f03b0daaa3832be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33597, "upload_time": "2019-03-11T02:39:11", "url": "https://files.pythonhosted.org/packages/5d/47/3bf9571a9b30e9a82f96abacf1d9ac4bafc32d8ced8ab1e28615273d9798/cloudlift-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "ff0e5db32ab4db7bfa1138ab3d629f3b", "sha256": "0bdbe178643df0300c8728cb6e35afff8620f5c0ecbe364b5339012c5d7c1ff4" }, "downloads": -1, "filename": "cloudlift-1.0.2-py3.7.egg", "has_sig": false, "md5_digest": "ff0e5db32ab4db7bfa1138ab3d629f3b", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 102395, "upload_time": "2019-03-26T07:43:48", "url": "https://files.pythonhosted.org/packages/8b/b6/742285ac4427ad143e8e87540147440eb6b60bbd669f80056cbc7c607a2d/cloudlift-1.0.2-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "94e1284cdd8b47ab596b02b827864779", "sha256": "159889539ccbea4fa5664fd6258a09b8ce746b59c95a732c68e8ededd8101f19" }, "downloads": -1, "filename": "cloudlift-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "94e1284cdd8b47ab596b02b827864779", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43853, "upload_time": "2019-03-26T07:43:46", "url": "https://files.pythonhosted.org/packages/4c/ff/e9722946ddd060069e475b3636ce3f01f0ecc533b964750269516cb7a38c/cloudlift-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "281d3dd00b955fcc10153b6c0211d8dc", "sha256": "8b176f2556d057bcd081a5b8ccb882623e9a47f3ac1c6d16ffa270823adc285b" }, "downloads": -1, "filename": "cloudlift-1.0.2.tar.gz", "has_sig": false, "md5_digest": "281d3dd00b955fcc10153b6c0211d8dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33559, "upload_time": "2019-03-26T07:43:50", "url": "https://files.pythonhosted.org/packages/74/51/ed9d01920fc4a8eea8ac952f268ae0f65877a9cd3c5bbba2d250ee54a506/cloudlift-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "6adc81753f89cfccd27ee53173fea0fc", "sha256": "6e7db09d3afc563404cb8e30ef379a340d368afba61ebb16e1765281a00b7db5" }, "downloads": -1, "filename": "cloudlift-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "6adc81753f89cfccd27ee53173fea0fc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43850, "upload_time": "2019-03-26T10:05:28", "url": "https://files.pythonhosted.org/packages/84/d4/d6159e9ed8ffc5c16d40d9953d7cc4b643b2e22b75e99898b908afc351a7/cloudlift-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4df26082594e524fdca543d5830e52f", "sha256": "880126403d18d2044ac9b5e0f48809b0e915c213e98669c4c54b9e0aa18c7ab7" }, "downloads": -1, "filename": "cloudlift-1.0.3.tar.gz", "has_sig": false, "md5_digest": "f4df26082594e524fdca543d5830e52f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34584, "upload_time": "2019-03-26T10:05:31", "url": "https://files.pythonhosted.org/packages/c6/76/b4f3574953ae725dbd9da40f097586faf8e3830244489d6faf62e3d9ff41/cloudlift-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "27bb5130584b2f090f63cdc57d11fe85", "sha256": "6e6f9b4b2611f7f83ce6f59304130f9da71d29f1bd5abe51ea1cc81d3f688266" }, "downloads": -1, "filename": "cloudlift-1.0.4-py3.7.egg", "has_sig": false, "md5_digest": "27bb5130584b2f090f63cdc57d11fe85", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 102419, "upload_time": "2019-04-22T16:16:45", "url": "https://files.pythonhosted.org/packages/b8/30/7f0d920713687b1ed4037959bde64208243a492de54d509e681e6e5775a3/cloudlift-1.0.4-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "e1a2e965fb6d7781dc1d2c8531961d15", "sha256": "8335bbb71cc812853f17e0664133add4295d6ed08dddc8a11605424e8dbabb06" }, "downloads": -1, "filename": "cloudlift-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "e1a2e965fb6d7781dc1d2c8531961d15", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43843, "upload_time": "2019-04-22T16:16:43", "url": "https://files.pythonhosted.org/packages/8a/b1/a2e09882f9e6ebedd027b21426d80e91718d3358d0518646ac06ec269227/cloudlift-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1a2a7480ea438d3fdfcf44921d88d35", "sha256": "205ba472e2ad1170ceda5a65829f3b041315b0c4ab82ff9feb8ce0c3e9081bb4" }, "downloads": -1, "filename": "cloudlift-1.0.4.tar.gz", "has_sig": false, "md5_digest": "b1a2a7480ea438d3fdfcf44921d88d35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34585, "upload_time": "2019-04-22T16:16:47", "url": "https://files.pythonhosted.org/packages/11/05/2f64fb355d13e2f101cc25f4f1c858d55d7ef81be8159277b79950734704/cloudlift-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "d16d4a8fc13374a3c052bd078cfd6afd", "sha256": "1a00f2c35a4709be9866cc396f97f8e563aeb1afa20828de05b69ef5c7c1d73e" }, "downloads": -1, "filename": "cloudlift-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d16d4a8fc13374a3c052bd078cfd6afd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43982, "upload_time": "2019-05-14T08:28:45", "url": "https://files.pythonhosted.org/packages/c2/1b/ae5187bbac94feb54c194f733332d95fcd81956d8beec35aaf0cbfd08ae3/cloudlift-1.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c358487a5cc171d2769b0b6c00939d8", "sha256": "efe08e65d27037b0bdf154ff4c66e384ce1c2fa2e8ccc521014647aa3d10564f" }, "downloads": -1, "filename": "cloudlift-1.0.5.tar.gz", "has_sig": false, "md5_digest": "8c358487a5cc171d2769b0b6c00939d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34737, "upload_time": "2019-05-14T08:28:47", "url": "https://files.pythonhosted.org/packages/d6/af/1365b3d0307d5488961bf60a01ff3e18e1f661a2854996777773893def68/cloudlift-1.0.5.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "a919ecae082d97b5d229e731d7ef9160", "sha256": "b1e81ff57b3e80c8b56cf2b5db45db762613ef4f6e5ae3d04bfd74dc6d709388" }, "downloads": -1, "filename": "cloudlift-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a919ecae082d97b5d229e731d7ef9160", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44065, "upload_time": "2019-06-04T10:35:18", "url": "https://files.pythonhosted.org/packages/ca/06/53f034b449af4af9733a6a09c3732c1b379ca7336faa74df460fe3a4bea3/cloudlift-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27020722a3fd1fcdb82c210bc002dfdf", "sha256": "931b034d9314fbcaee8d65bec2d12362e41c45c0ba59c104cf90251235bca0bb" }, "downloads": -1, "filename": "cloudlift-1.1.0.tar.gz", "has_sig": false, "md5_digest": "27020722a3fd1fcdb82c210bc002dfdf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34844, "upload_time": "2019-06-04T10:35:20", "url": "https://files.pythonhosted.org/packages/69/ed/0e6311adbd56d81f024b0fafc9b8657a79ebac64ef736e9e49a79468e74e/cloudlift-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "0b01df5ed00df6b9456d20c26b831a00", "sha256": "8438ca2e42bc4a859d05ee41fbcfee25a7f2add82852adb88a5a29cf4ec2e72f" }, "downloads": -1, "filename": "cloudlift-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0b01df5ed00df6b9456d20c26b831a00", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44084, "upload_time": "2019-07-04T08:00:20", "url": "https://files.pythonhosted.org/packages/d2/d6/5285fe6ab232dae904ac70f0031622ae703356f319b13dae380d0087c1e7/cloudlift-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64750872807fe9e337e1437583f9e281", "sha256": "ccf9d307a9d061d01aa2848163af19eddb0be8999f13c4fa7cfc0f519ecbd939" }, "downloads": -1, "filename": "cloudlift-1.1.1.tar.gz", "has_sig": false, "md5_digest": "64750872807fe9e337e1437583f9e281", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34880, "upload_time": "2019-07-04T08:00:23", "url": "https://files.pythonhosted.org/packages/5d/1d/5e606995f214289a6ce4273caf6e320173df352d403872db8276fe37b161/cloudlift-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0b01df5ed00df6b9456d20c26b831a00", "sha256": "8438ca2e42bc4a859d05ee41fbcfee25a7f2add82852adb88a5a29cf4ec2e72f" }, "downloads": -1, "filename": "cloudlift-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0b01df5ed00df6b9456d20c26b831a00", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44084, "upload_time": "2019-07-04T08:00:20", "url": "https://files.pythonhosted.org/packages/d2/d6/5285fe6ab232dae904ac70f0031622ae703356f319b13dae380d0087c1e7/cloudlift-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64750872807fe9e337e1437583f9e281", "sha256": "ccf9d307a9d061d01aa2848163af19eddb0be8999f13c4fa7cfc0f519ecbd939" }, "downloads": -1, "filename": "cloudlift-1.1.1.tar.gz", "has_sig": false, "md5_digest": "64750872807fe9e337e1437583f9e281", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34880, "upload_time": "2019-07-04T08:00:23", "url": "https://files.pythonhosted.org/packages/5d/1d/5e606995f214289a6ce4273caf6e320173df352d403872db8276fe37b161/cloudlift-1.1.1.tar.gz" } ] }