{ "info": { "author": "Waterbear Cloud", "author_email": "hello@waterbear.cloud", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)", "Programming Language :: Python", "Programming Language :: Python :: 3.7" ], "description": "## AIM\n\nAIM: Application Infrastructure Manager is an all-in-one AWS infrastructure orchestration tool.\nIt has a command-line interface for managing complete, working environments based on declarative,\nsemantic YAML files.\n\nAIM has the following benefits for managing your Infrastructure as Code projects:\n\n\n - All-in-one: work at the highest levels of abstraction possible. You don't need learn how\n to cobble together a collection of tools. Replace several different languages with a single\n directory of YAML files.\n\n - Declarative configuration: declarative configuration gives your infrastructure\n repeatability and predictability.\n\n - DRY configuration: Environments are described with hiearchical YAML structures that override\n base network and application defaults. You can see at a glance exactly which configuration is\n different between your staging and production environments. You can override configuration for\n a whole environment, or for multi-region environments, have per-region overrides.\n\n - Time saving features: Want to alert when instances are in swap? Simply declare a swap metric\n and swap alarm for your application and AIM will ensure an agent is configured and installed\n on your instances, as well as auto-generating an IAM Policy to allow your instances to report\n metrics to CloudWatch.\n\n - Intelligent references remove cumbersome glue code: AIM configuration can refer to other configuration\n objects. Networks refer to just a human-readable name of the account they are provisioned in.\n When a Lambda declares a subscription to an SNS Topic, AIM can auto-generate an IAM Polciy to allow that.\n\n - Validate all the things: AIM configuration has a hierarchical structure with an explicit schema. Add the\n ability for configuration to reference other objects and you can validate that you have sane configuration\n before you even try to deploy anything to AWS.\n\n - Multi-region, multi-account: you can provision an application to multiple regions,\n but also to multiple accounts. You can even quickly provision new child accounts\n that will have delegate role access from an admin role in your parent account.\n\n - Metadata everywhere: When problems happen with configuration or provisioning, or when an alarm\n fires, every resource knows exactly how it fits into the system. Alarm and error messages have\n full structured information about their account, region, environment and application.\n\n# Resources\n\n - [Documentation](https://aim.waterbear.cloud)\n\n - [PyPI Package](https://pypi.org/project/aim/)\n\n# Credits\n\nAIM is developed by [Waterbear Cloud](https://waterbear.cloud) and used to support their Waterbear Cloud platform.\n\n\n\nChangelog for aim\n=================\n\n3.0.0 (2019-09-27)\n------------------\n\n### Added\n\n- New directory `aimdata` is created within an AIM Project by AIM. This is used to record state\n of AIM provisioning. CloudFormation templates used to create stacks in AWS are cached as well\n as the last copy of the AIM Project YAML files. These files are used to speed up subsequent\n runs and more importantly can show you what is changed between AIM runs to make it easier to\n review new changes before they are actaully made to AWS.\n\n- CLI: Display a diff of changes from last AIM run and new run in the AIM Project YAML configuration.\n The `-d`, `--disable-validation` flag can be used to\n\n- CLI: Display changes and ask for verification before updating CF templates. This can be disabled\n with the `-y` flag.\n\n- CLI: Offer to delete a stack in a CREATE FAILED state so that a new stack can be provisioned in it's place.\n\n- AWS credentials can now be set to live for up to 12 hours. You can set the .credentials field to\n `mfa_session_expiry_secs: 43200 # 12 hours` to enable this. The default is still one hour.\n\n- Resources with the `change_protected` flag set to true will not have their CloudFormation stacks\n updated.\n\n- API Gateway REST API can now have models, methods and stages. It supports Lambda integration\n with either 'AWS_PROXY' via an assumed Role or 'AWS' via a Lambda Permission.\n\n- S3Bucket has NotificationConfiguration for Lambdas. Lambda will detect if an S3Bucket within the\n same application notifies the lambda and will automatically add a Lambda permission to allow S3 to\n invoke the lambda.\n\n- Lambda AWS::SNS::Subscription resources now have a Region property.\n\n- CloudWatchAlarms template has a `notification_region` class attribute that can be set if\n notificationgroup subscriptions need to go to a single region.\n\n- CloudFront has Origin ID support.\n\n- EFS Resource support.\n\n### Changed\n\n- Breaking! CF Template names have been\u00a0refactored so that they are more user friendly when listed in the\n AWS Console. This requires deletion and reprovisioning of AWS resources. Templates now have new\n consistent ways to create their names, so this should be the last time this change happens.\n\n- CLI: References to NetworkEnvironments now use consistent `aim.ref` syntax, e.g.\n `aim provision netenv ..`\n\n- All stacks are created with Termination Protection set.\n\n- CF template base class `aim.cftemplates.cftemplates.CFTemplate` has new methods for creating consistent\n AWS names: `create_resource_name()`, `create_resoruce_name_join()`, `create_cfn_logical_id()`,\n and `create_cfn_logical_id_join()`.\n\n- Console messages reworked to show relevant information in columns.\n\n- CF template base class method `gen_parameter` renamed to `create_cfn_parameter`.\n\n- S3 controller now relies on the bucket name to come from the S3Bucket model object.\n\n- Lambda code.s3_bucket field can now be an aim.ref or a plain bucket name.\n\n- You can provision without specifying the region and it will include all regions in an env.\n\n- NotificationGroups are loaded from project['resource']['notificationgroups']\n\n### Fixed\n\n- CloudTrail generates it's own CloudWatch LogGroup if needed. Outputs for CloudTrail and CloudWatch LogGroup.\n\n- APIGateway, SNSTopics and Lambda now respect the `enabled` field.\n\n2.0.0 (2019-08-26)\n------------------\n\n### Fixed\n\n- snstopic output ref and lambda alarm ref fixes.\n\n- Added IAM Users feature for creating IAM Users and configuring console access\n assigning permissions, and access keys.\n\n### Added\n\n- Moved aim reference generation into the Model. Model objects now have .aim_ref and\n .aim_ref_parts properties which contain their aim.ref reference.\n\n- Added StackOutputsManger(). This now creates and maintains $AIM_HOME/ResourceMap.yaml\n which will include a complete list of all stack outputs that are referenced using the\n yaml dictionary path of the resource.\n\n- ALB Outputs includes TargetGroup Fullname.\n\n- Minimal APIGatewayRestApi template.\n\n- Added external_resource support to the ACM\n\n- Added ReadOnly support to the Administrator IAMUserPermission\n\n### Changed\n\n- Automated CloudFront Parameter lists for things like security group and target arn lists.\n\n- Consolidated CFTemplates and Stack's and other Stack cleanups.\n\n- CloudWatch Alarms multi-Dimension Alarms now expect an aim.ref. CloudWatch Alarms are now Troposphere.\n\n\n1.4.0 (2019-08-21)\n------------------\n\n### Added\n\n- CloudTrail resource adds basic CloudTrail provisioning.\n\n- LogGroups are created for all groups that the CloudWatch Agent will require.\n Uses the new Logging schema in aim.models.\n\n- Added CloudFront application Resource\n\n- Added VPC Peering application resource.\n\n- Automated the glue of passing outputs from a stack to the parameter of another stack.\n\n1.3.1 (2019-08-07)\n------------------\n\n### Fixed\n\n- Python packaging, also include version.txt.\n\n\n1.3.0 (2019-08-07)\n------------------\n\n### Changed\n\n- CloudWatchAlarms now check for namespace and dimesions fields, that\n can be used to override the default of one primary dimension and the resource_name.\n\n### Fixed\n\n- Python dist did not include README.md and CHANGELOG.md\n\n1.2.0 (2019-08-06)\n------------------\n\n### Added\n\n- Deleting resources can leave dangling CloudFormation templates in your\n account. Controllers for NetworkEnvironments now keep track of templates\n they've provisioned and warn you about unused templates.\n\n- NotificationGroups can be provisioned as SNS Topics and subscriptions.\n Use ``aim provision notificationgroups``.\n\n- CloudWatch Alarm descriptions are JSON with metadata about the environment,\n region, application, resource group and resource that the alarm is for.\n\n- CloudWatch Alarms will not notify the SNS Topics that they are subscribed to.\n\n- Rewrote commands with consistent way of passing arguments to controllers.\n Controllers args can now be all lower case.\n\n- Added Account initialization to 'aim init project'.\n\n### Changed\n\n - AIM references have a new format! It's simpler and more consistent.\n Every ref now starts with ``aim.ref ``.\n\n - Created ``aim.utils`` to clean up AimContext object.\n\n1.1.0 (2019-07-24)\n------------------\n\n### Added\n\n- Logging functionality added to monitoring. Logs will be ingested by a configured\n CloudWatch Agent and sent to a CloudWatch Log Group.\n\n- Added --nocache to cli to force updates to stacks.\n\n- CLI reports human readable validation errors from AIM project configuration files\n\n- \"aim ftest\" command added to run functional tests on the \"aim init project\"\n templates. This command will be expanded in the future so you can test your\n own aim projects.\n\n- Resources/S3.yaml is now functional: eg. aim validate S3\n\n- Added Region to cftemplates so we can do inline replace of and .\n\n- Added LambdaPermission and CWEventRule cftemplates.\n\n- Added CloudWatchController and LambdaController.\n\n### Fixed\n\n - cookiecutter generated .credentials file was not in git repo as, the cookiecutter\n .gitignore file was causing it to be ignored.\n\n\n1.0.0 (2019-07-06)\n------------------\n\n### Added\n\n- Initial documentation with AIM project site at https://aim.waterbear.cloud/en/latest/\n\n- Added init command with ability to create starting templates for AIM projects\n with the cookiecutter project under the hood.\n\n- Added redirect to Listner rules in the ALB\n\n### Changed\n\n- Document and refactor AIM CLI.\n\n- Moved yaml.py to aim.core\n\n- Refactored S3 Controller\n\n- Ported Route53 config to the model\n\n- Ported CodeCommit config to the model\n\n- Refactored S3 to use Application StackGroup\n\n- CPBD artifacts s3 bucket now uses S3 Resource in NetEnv yaml instead\n\n- Converted the ALB's listener and listener rules to dicts from lists\n\n### Removed\n\n- Removed deprecated configuration\n\n\n0.6.0 (2019-06-21)\n-----------------------\n\n- Document and clean-up AIM CLI\n\n- Validate and Provision functioning after cleanup\n\n\n0.5.0 (2019-06-21)\n------------------\n\n- First open source release", "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/waterbear-cloud/aim", "keywords": "AWS,Waterbear,Cloud,Infrastructure-as-Code", "license": "", "maintainer": "", "maintainer_email": "", "name": "aim", "package_url": "https://pypi.org/project/aim/", "platform": "", "project_url": "https://pypi.org/project/aim/", "project_urls": { "Homepage": "https://github.com/waterbear-cloud/aim" }, "release_url": "https://pypi.org/project/aim/3.0.0/", "requires_dist": null, "requires_python": "", "summary": "AIM: Application Infrastructure Manager", "version": "3.0.0" }, "last_serial": 5894808, "releases": { "0.5.0": [ { "comment_text": "", "digests": { "md5": "9f397b396b6eca17c43113f095cabe20", "sha256": "52387a455c73764437aafde8a07cd2d943ffc7315bc9dafd825a76238962a241" }, "downloads": -1, "filename": "aim-0.5.0.tar.gz", "has_sig": false, "md5_digest": "9f397b396b6eca17c43113f095cabe20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76309, "upload_time": "2019-06-21T19:03:19", "url": "https://files.pythonhosted.org/packages/1c/8f/90402ab45347ab3f078c67c71f1646a3920f07ed923baa1f8dc6f85b0202/aim-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "74c1c2cec167cecc0cdcb81f648624cc", "sha256": "d238925eea4a2f6f63090e0ffe19003506b06749775215501e112d2b6c238396" }, "downloads": -1, "filename": "aim-0.6.0.tar.gz", "has_sig": false, "md5_digest": "74c1c2cec167cecc0cdcb81f648624cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 75860, "upload_time": "2019-06-22T04:54:19", "url": "https://files.pythonhosted.org/packages/8b/46/c8af74ac1a3b2c3766342e4f87c5803989635e3311270cc7ae992e48f048/aim-0.6.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "2749b1214eabd801df2ec918eadfa4ea", "sha256": "15e1c26f29ad759ddf7db44a4b3438e49f079fb9a1b0da07eb29d6ed7487902e" }, "downloads": -1, "filename": "aim-1.0.0.tar.gz", "has_sig": false, "md5_digest": "2749b1214eabd801df2ec918eadfa4ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 82700, "upload_time": "2019-07-06T19:16:33", "url": "https://files.pythonhosted.org/packages/fe/c1/b76e245d777f99b24ddf372cb7614326da14e5f539a461d2e91e7939a1bc/aim-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "7a18a421e525c917de15260790cd80d5", "sha256": "abcc5c413aa6087cd3949ece704a75d05029f28805cb9817270011f479fb1bd1" }, "downloads": -1, "filename": "aim-1.1.0.tar.gz", "has_sig": false, "md5_digest": "7a18a421e525c917de15260790cd80d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90514, "upload_time": "2019-07-25T01:35:51", "url": "https://files.pythonhosted.org/packages/40/69/bebd1b82195f9c998d43084bbaa6258df5a9e9ad0509e77f4df0c79b74ce/aim-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "16edbaee88a6d32c5737c1d8e49b266a", "sha256": "054ab4096da0c28043d424afad0117c59aaabe65d333578a45285630ccfb3258" }, "downloads": -1, "filename": "aim-1.2.0.tar.gz", "has_sig": false, "md5_digest": "16edbaee88a6d32c5737c1d8e49b266a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 99617, "upload_time": "2019-08-06T20:48:43", "url": "https://files.pythonhosted.org/packages/66/0c/3f4a0bed286e92394b134834dd2001d651ea9e59cc13f9149af22aedc5d0/aim-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "795eb043e6a49a84a49a1acf3b3e2f58", "sha256": "7967bf3eced805a1fd6b6bd703c43641d1fbc56062bc45d3839c9707316684e2" }, "downloads": -1, "filename": "aim-1.3.0.tar.gz", "has_sig": false, "md5_digest": "795eb043e6a49a84a49a1acf3b3e2f58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 100958, "upload_time": "2019-08-07T22:29:52", "url": "https://files.pythonhosted.org/packages/f2/56/3876bfeafcedff1f5aa71071f5ea094dd438142ad3e13b1d33a7086a03ec/aim-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "892696e99de7a2eab37c4468c9792669", "sha256": "8076568e3578e23571bf8481b10bfa7c29a7971c00975fa77cb2fed4f95f0cb3" }, "downloads": -1, "filename": "aim-1.3.1.tar.gz", "has_sig": false, "md5_digest": "892696e99de7a2eab37c4468c9792669", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101017, "upload_time": "2019-08-07T22:42:31", "url": "https://files.pythonhosted.org/packages/bf/7b/dea781bbc9f7703ceaf7ab6f25c7049a00a9996a0277cc9bd595dd9574c7/aim-1.3.1.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "801551981946176cece60a11610e5495", "sha256": "210e6d3f3ca81ab353905469d7e3abd53d66dbf11c140494d57fc8accfe3fc84" }, "downloads": -1, "filename": "aim-1.4.0.tar.gz", "has_sig": false, "md5_digest": "801551981946176cece60a11610e5495", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111994, "upload_time": "2019-08-21T18:49:09", "url": "https://files.pythonhosted.org/packages/04/1a/76512a95e641286c85cdc283e88614c801af4af257a7d6caadfdcb97e6e4/aim-1.4.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "1aac8b847f230ce44dcf2ca748230e2e", "sha256": "48174229c013d31015241c30214f93ee989cc0d2ee6c2e891c082e6b63a92afd" }, "downloads": -1, "filename": "aim-2.0.0.tar.gz", "has_sig": false, "md5_digest": "1aac8b847f230ce44dcf2ca748230e2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 117082, "upload_time": "2019-08-26T20:16:41", "url": "https://files.pythonhosted.org/packages/33/6d/1ccad609b0ecd4374fce876c55a689f16c10ea225b38005d3bb61dd2863b/aim-2.0.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "014e291a8ee029360797ce90a4a6968c", "sha256": "3c6015d65ae379c5c6262ffec4b67700a8b327bc335988cc7b2828724d60a938" }, "downloads": -1, "filename": "aim-3.0.0.tar.gz", "has_sig": false, "md5_digest": "014e291a8ee029360797ce90a4a6968c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 142651, "upload_time": "2019-09-27T08:09:23", "url": "https://files.pythonhosted.org/packages/42/73/02dda17f44053d37e0976e290ab6c0f6924fd4b8dbf9a81658f1ec6a3f0a/aim-3.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "014e291a8ee029360797ce90a4a6968c", "sha256": "3c6015d65ae379c5c6262ffec4b67700a8b327bc335988cc7b2828724d60a938" }, "downloads": -1, "filename": "aim-3.0.0.tar.gz", "has_sig": false, "md5_digest": "014e291a8ee029360797ce90a4a6968c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 142651, "upload_time": "2019-09-27T08:09:23", "url": "https://files.pythonhosted.org/packages/42/73/02dda17f44053d37e0976e290ab6c0f6924fd4b8dbf9a81658f1ec6a3f0a/aim-3.0.0.tar.gz" } ] }