This release has a breaking change. The VPC
NAT gateways
has been renamed
to NAT Gateways per AZ
and its get_current_usage()
method will now return
a list with multiple items. See the changelog entry for #214 below.
This release requires the following new IAM permissions to function:
firehose:ListDeliveryStreams
- #217 - add support
for new/missing EC2 instance types:
m4.16xlarge
,x1.16xlarge
,x1.32xlarge
,p2.xlarge
,p2.8xlarge
,p2.16xlarge
. - #215 - support "Regional Benefit" Reserved Instances that have no specific AZ set on them. Per AWS, these are exempt from On-Demand Running Instances limits like all other RIs.
- #214 - The VPC "NAT gateways" limit incorrectly calculated usage for the entire region, while the limit is actually per-AZ. It also had strange capitalization that confused users. The name has been changed to "NAT Gateways per AZ" and the usage is now correctly calculated per-AZ instead of region-wide.
- #221 /
PR #222 - Fix bug
in handling of STS Credentials where they are cached permanently in
connectable.Connectable.credentials
, and new AwsLimitChecker instances in the same Python process reuse the first set of STS credentials. This is fixed by storing the Account ID as part ofconnectable.ConnectableCredentials
and getting new STS creds if the cached account ID does not match the currentaccount_id
on theConnectable
object. - PR #216 - add new "Firehose" service with support for "Delivery streams per region" limit.
- #213 /
PR #188 - support
AWS cross-sdk credential file profiles via
-P
/--profile
, like awscli.
This release requires the following new IAM permissions to function:
ec2:DescribeSpot*
or more specifically:ec2:DescribeSpotDatafeedSubscription
ec2:DescribeSpotFleetInstances
ec2:DescribeSpotFleetRequestHistory
ec2:DescribeSpotFleetRequests
ec2:DescribeSpotInstanceRequests
ec2:DescribeSpotPriceHistory
ec2:DescribeNatGateways
- #51 / PR #201 - Add experimental support for Spot Instance and Spot Fleet limits (only the ones explicitly documented by AWS). This is currently experimental, as the documentation is not terribly clear or detailed, and the author doesn't have access to any accounts that make use of spot instances. This will be kept experimental until multiple users validate it. For more information, see the EC2 limit documentation.
- PR #204 contributed by hltbra to add support for VPC NAT Gateways limit.
- Add README and Docs link to waffle.io board.
- Fix bug where
--skip-ta
command line flag was ignored in :py:meth:`~.Runner.show_usage` (when running with-u
/--show-usage
action). - Add link to waffle.io Kanban board
- #202 - Adds management of integration test IAM policy via Terraform.
- #211 - Add working download stats to README and docs
- Fix broken landscape.io badges in README and docs
- #194 - On Limits page of docs, clarify that Running On-Demand Instances does not include Reserved Instances.
- Multiple
tox.ini
changes:- simplify integration and unit/versioncheck testenv blocks using factors and reuse
- py26 testenv was completely unused, and py26-unit was running and working with mock==2.0.0
- use pytest<3.0.0 in py32 envs
- #208 - fix KeyError when
timestamp
key is missing from TrustedAdvisor check result dict
This release includes a change to awslimitchecker
's Python API. awslimitchecker.limit.AwsLimit.get_limit <https://awslimitchecker.readthedocs.io/en/latest/awslimitchecker.limit.html#awslimitchecker.limit.AwsLimit.get_limit> can now return either an int
or None
, as TrustedAdvisor now lists some service limits as being explicitly "unlimited".
- #195 - Handle TrustedAdvisor explicitly reporting some limits as "unlimited". This introduces the concept of unlimited limits, where the effective limit is
None
.
- PR #190 / #189 - Add support for EBS st1 and sc1 volume types (adds "EBS/Throughput Optimized (HDD) volume storage (GiB)" and "EBS/Cold (HDD) volume storage (GiB)" limits).
- PR #184 Fix default VPC/Security groups per VPC limit from 100 to 500, per VPC limits documentation (this limit was increased at some point recently). Thanks to Travis Thieman for this contribution.
This release requires the following new IAM permissions to function:
elasticbeanstalk:DescribeApplications
elasticbeanstalk:DescribeApplicationVersions
elasticbeanstalk:DescribeEnvironments
- #70 Add support for ElasicBeanstalk service.
- #177 Integration tests weren't being properly skipped for PRs.
- #175 the simplest and most clear contributor license agreement I could come up with.
- #172 add an integration test running against sa-east-1, which has fewer services than the popular US regions.
- #170 Critical bug fix in implementation of #71 - SES only supports three regions (us-east-1, us-west-2, eu-west-1) and causes an unhandled connection error if used in another region.
This release requires the following new IAM permissions to function:
rds:DescribeAccountAttributes
iam:GetAccountSummary
s3:ListAllMyBuckets
ses:GetSendQuota
cloudformation:DescribeAccountLimits
cloudformation:DescribeStacks
Issues addressed:
#150 add CHANGES.rst to Sphinx docs
-
- add support for RDS 'DB Clusters' and 'DB Cluster Parameter Groups' limits
- use API to retrieve RDS limits
- switch RDS from calculating usage to using the DescribeAccountAttributes usage information, for all limits other than those which are per-resource and need resource IDs (Max auths per security group, Read replicas per master, Subnets per Subnet Group)
- awslimitchecker now requires an additional IAM permission,
rds:DescribeAccountAttributes
#157 fix for TrustedAdvisor polling multiple times - have TA set an instance variable flag when it updates services after a poll, and skip further polls and updates if the flag is set. Also add an integration test to confirm this.
#50 Add support for IAM service with a subset of its limits (Groups, Instance Profiles, Policies, Policy Versions In Use, Roles, Server Certificates, Users), using both limits and usage information from the GetAccountSummary API action. This requires an additional IAM permission,
iam:GetAccountSummary
.#48 Add support for S3 Buckets limit. This requires an additional IAM permission,
s3:ListAllMyBuckets
.#71 Add support for SES service (daily sending limit). This requires an additional IAM permission,
ses:GetSendQuota
.#69 Add support for CloudFormation service Stacks limit. This requires additional IAM permissions,
cloudformation:DescribeAccountLimits
andcloudformation:DescribeStacks
.#166 Speed up TravisCI tests by dropping testing for PyPy and PyPy3, and only running the -versioncheck tests for two python interpreters instead of 8.
- #155 Bug fix for uncaught KeyError on accounts with Trusted Advisor (business-level support and above). This was caused by an undocumented change released by AWS between Thu, 10 Mar 2016 07:00:00 GMT and Fri, 11 Mar 2016 07:00:00 GMT, where five new IAM-related checks were introduced that lack the
region
data field (which the TrustedAdvisorResourceDetail API docs still list as a required field).
- #117 fix Python 3.5 TravisCI tests and re-enable automatic testing for 3.5.
- #116 add t2.nano EC2 instance type; fix typo - "m4.8xlarge" should have been "m4.10xlarge"; update default limits for m4.(4|10)xlarge
- #134 Minor update to project description in docs and setup.py; use only _VERSION (not git) when building in RTD; include short description in docs HTML title; set meta description on docs index.rst.
- #128 Update Development and Getting Help documentation; add GitHub CONTRIBUTING.md file with link back to docs, as well as Issue and PR templates.
- #131 Refactor TrustedAdvisor interaction with limits for special naming cases (limits where the TrustedAdvisor service or limit name doesn't match that of the awslimitchecker limit); enable newly-available TrustedAdvisor data for some EC2 on-demand instance usage.
- Add coverage for one code branch introduced in PR #100 that wasn't covered by tests.
- #112 fix a bug in the versioncheck integration tests, and a bug uncovered in versioncheck itself, both dealing with checkouts that are on a un-cloned branch.
- #105 build and upload wheels in addition to sdist
- #95 major refactor to convert AWS client library from boto to boto3. This also includes significant changes to the internal connection logic and some of the internal (private) API. Pagination has been moved to boto3 wherever possible, and handling of API request throttling has been removed from awslimitchecker, as boto3 handles this itself. This also introduces full, official support for python3.
- Add separate
localdocs
tox env for generating documentation and updating output examples. - #113 update, expand and clarify documentation around threshold overrides; ignore some sites from docs linkcheck.
- #114 expanded automatic integration tests
- Please note that version 0.3.0 of awslimitchecker moved from using
boto
as its AWS API client to usingboto3
. This change is mostly transparent, but there is a minor change in how AWS credentials are handled. Inboto
, if theAWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
environment variables were set, and the region was not set explicitly via awslimitchecker, the AWS region would either be taken from theAWS_DEFAULT_REGION
environment variable or would default to us-east-1, regardless of whether a configuration file (~/.aws/credentials
or~/.aws/config
) was present. With boto3, it appears that the default region from the configuration file will be used if present, regardless of whether the credentials come from that file or from environment variables.
- PR #100 support MFA tokens when using STS assume role
- #107 add support to explicitly disable pagination, and use for TrustedAdvisor to prevent pagination warnings
- #83 remove the "v" prefix from version tags so ReadTheDocs will build them automatically.
- #21 run simple integration tests of
-l
and-u
for commits to main repo branches.
- #101 Ignore stopped and terminated instances from EC2 Running On-Demand Instances usage count.
- #47 In VersionCheck git -e tests, explicitly fetch git tags at beginning of test.
- #86 wrap all AWS API queries in
awslimitchecker.utils.boto_query_wrapper
to retry queries with an exponential backoff when API request throttling/rate limiting is encountered - Attempt at fixing #47 where versioncheck acceptance tests fail under TravisCI, when testing master after a tagged release (when there's a tag for the current commit)
- Fix #73 versioncheck.py reports incorrect information when package is installed in a virtualenv inside a git repository
- Fix #87 run coverage in all unit test Tox environments, not a dedicated env
- Fix #75 re-enable py26 Travis builds now that pytest-dev/pytest#1035 is fixed (pytest >= 2.8.3)
- Fix #13 re-enable Sphinx documentation linkcheck
- Fix #40 add support for pagination of API responses (to get all results) and handle pagination for all current services
- Fix #88 add support for API-derived limits. This is a change to the public API for
awslimitchecker.limit.AwsLimit
and the CLI output. - Fix #72 add support for some new limits returned by Trusted Advisor. This renames the following limits:
*
EC2/EC2-VPC Elastic IPs
toEC2/VPC Elastic IP addresses (EIPs)
*RDS/Read Replicas per Master
toRDS/Read replicas per master
*RDS/Parameter Groups
toRDS/DB parameter groups
- Fix #84 pull some EC2 limits from the API's DescribeAccountAttributes action
- Fix #94 pull AutoScaling limits from the API's DescribeAccountLimits action
- Add
autoscaling:DescribeAccountLimits
andec2:DescribeAccountAttributes
to required IAM permissions. - Ignore
AccountLimits
objects from result pagination
- Update trove classifier Development Status in setup.py to Beta
- Fix markup formatting issue in
docs/source/getting_started.rst
- temporarily disable py26 testenv in Travis; failing due to upstream bug pytest-dev/pytest#1035
- PR #64 and #68 -
support [STS](http://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) and regions
* Add support for passing in a region to connect to via
-r
/--region
* Add support for using STS to check resources in another account, including support forexternal_id
* Major refactor of how service classes connect to AWS API - #74 add support for EC2 t2.large instance type
- #65 handle case where ElastiCache API returns CacheCluster response with CacheNodes None
- #63 update Python usage documentation
- #49 clean up badges in README.rst and sphinx index.rst; PyPi downloads and version badges broken (switch to shields.io)
- #67 fix typo in required IAM policy; comma missing in list returned from _Ec2Service.required_iam_permissions()
- #76 default limits for EBS volume usage were in TiB not GiB, causing invalid default limits on accounts without Trusted Advisor
- Changes to some tests in
test_versioncheck.py
to aid in debugging #47 where Travis tests fail on master because of git tag from release (if re-run after release)
- #54 - For 'RDS/DB snapshots per user' limit, only count manual snapshots.
- PR #58 - Fix issue where BotoServerError exception is unhandled when checking ElastiCache limits on new accounts without EC2-Classic.
- #55 - use .version instead of .parsed_version to fix version information when using pip<6
- #46 - versioncheck integration test fixes
* Rename
-integration
tox environments to-versioncheck
* Skip versioncheck git install integration tests on PRs, since they'll fail - #56 - logging fixes * change the AGPL warning message to write directly to STDERR instead of logging * document logging configuration for library use * move boto log suppression from checker to runner
- Add contributing docs
- initial released version