awslimitchecker

A script and python package to check your AWS service limits and usage via boto3.

AGPL-3.0 License

Downloads
279.7K
Stars
514
Committers
48
awslimitchecker - 5.1.0 released 2018-09-23

Published by jantman about 6 years ago

  • Issue #358 - Update EFS with new default limit for number of File systems: 70 in us-east-1 and 125 in other regions.
  • PR #359 - Add support for t3 EC2 instance types (thanks to chafouin).
  • Switch py37 TravisCI tests from py37-dev to py37 (release).
awslimitchecker - 5.0.0 released 2018-07-30

Published by jantman about 6 years ago

This release requires new IAM permissions:

  • cloudtrail:DescribeTrails
  • cloudtrail:GetEventSelectors
  • route53:GetHostedZone
  • route53:ListHostedZones
  • route53:GetHostedZoneLimit

This release officially drops support for Python 2.6 and 3.3.

  • PR #345 / Issue #349 - Add Route53 service and checks for "Record sets per hosted zone" and "VPC associations per hosted zone" limits (the latter only for private zones). (thanks to julienduchesne).
  • Support Per-Resource Limits (see below). Note that this includes some changes to the awslimitchecker CLI output format and some minor API changes.
  • Issue #317 - Officially drop support for Python 2.6 and 3.3. Also, begin testing py37.
  • Issue #346 - Update documentation for S3 API calls made by ElasticBeanstalk while retrieving EB limits (thanks to fenichelar for finding this).
  • PR #350 - Add support for CloudTrail limits (thanks to fpiche).
  • Issue #352 - Update version check PyPI URL and set User-Agent when performing version check.
  • Issue #351 - Add support for forty two (42) missing EC2 instance types including the new c5d/m5d/r5d/z1d series instances.

Per-Resource Limits

Some Limits (AwsLimit) now have limits/maxima that are per-resource rather than shared across all resources of a given type. The first limit of this kind that awslimitchecker supports is Route53, where the "Record sets per hosted zone" and "VPC associations per hosted zone" limits are set on a per-resource (per-zone) basis rather than globally to all zones in the account. Limits of this kind are also different since, as they are per-resource, they can only be enumerated at runtime. Supporting limits of this kind required some changes to the internals of awslimitchecker (specifically the AwsLimit and AwsLimitUsage classes) as well as to the output of the command line script/entrypoint.

For limits which support different maxima/limit values per-resource, the command line awslimitchecker script -l / --list-limits functionality will now display them in Service/Limit/ResourceID format, i.e.:

Route53/Record sets per hosted zone/foo.com                  10000 (API)
Route53/Record sets per hosted zone/bar.com                  10000 (API)
Route53/Record sets per hosted zone/local.                   15000 (API)
Route53/VPC associations per hosted zone/local.              100 (API)

As opposed to the Service/Limit format used for all existing limits, i.e.:

IAM/Groups             300 (API)
IAM/Instance profiles  2000 (API)

If you are relying on the output format of the command line awslimitchecker script, please use the Python API instead.

For users of the Python API, please take note of the new AwsLimit.has_resource_limits and AwsLimitUsage.get_maximum methods which assist in how to identify limits that have per-resource maxima. Existing code that only surfaces awslimitchecker's warnings/criticals (the result of AwsLimitChecker.check_thresholds) will work without modification, but any code that displays or uses the current limit values themselves may need to be updated.

awslimitchecker - 4.0.2 released 2018-03-22

Published by jantman over 6 years ago

This is a minor bugfix release for one issue:

  • Issue #341 - The Trusted Advisor EBS checks for General Purpose (SSD) volume storage (GiB) and Magnetic volume storage (GiB) have been renamed to to General Purpose SSD (gp2) volume storage (GiB) and Magnetic (standard) volume storage (GiB), respectively, to provide more unified naming. This change was made on March 19th or 20th without any public announcement, and resulted in awslimitchecker being unable to determine the current values for these limits from Trusted Advisor. Users relying on Trusted Advisor for these values saw the limit values incorrectly revert to the global default. This is an internal-only change to map the new Trusted Advisor check names to the awslimitchecker limit names.
awslimitchecker - 4.0.1 released 2018-03-09

Published by jantman over 6 years ago

This is a minor bugfix release for a few issues that users have reported recently.

  • Fix Issue #337 where sometimes an account even with Business-level support will not have a Trusted Advisor result for the Service Limits check, and will return a result with status: not_available or a missing flaggedResources key.
  • Fix Issue #335 where runs against the EFS service in certain unsupported regions result in either a connection timeout or an AccessDeniedException.
awslimitchecker - 4.0.0 released 2018-02-17

Published by jantman over 6 years ago

This release requires new IAM permissions:

  • ds:GetDirectoryLimits
  • ecs:DescribeClusters
  • ecs:DescribeServices
  • ecs:ListClusters
  • ecs:ListServices
  • Fix various docstring problems causing documentation build to fail.
  • PR #328 - Add support for Directory Service and ECS (thanks to di1214).
    • NOTE the "EC2 Tasks per Service (desired count)" limit uses non-standard resource IDs, as service names and ARNs aren't unique by account or region, but only by cluster. i.e. the only way to uniquely identify an ECS Service is by the combination of service and cluster. As such, the resource_id field for usage values of the "EC2 Tasks per Service (desired count)" limit is a string of the form cluster=CLUSTER-NAME; service=SERVICE-NAME.
  • PR #330 - Update numerous no-longer-correct default limits (thanks to KingRogue).
    • AutoScaling
      • Auto Scaling groups - 20 to 200
      • Launch configurations - 100 to 200
    • EBS
      • Provisioned IOPS - 40000 to 200000
      • Provisioned IOPS (SSD) storage (GiB) - 20480 to 102400 (100 TiB)
      • General Purpose (SSD) volume storage (GiB) - 20480 to 102400 (100 TiB)
      • Throughput Optimized (HDD) volume storage (GiB) - 20480 to 307200 (300 TiB)
      • Cold (HDD) volume storage (GiB) - 20480 to 307200 (300 TiB)
    • ElasticBeanstalk
      • Applications - 25 to 75
      • Application versions - 500 to 1000
    • IAM
      • Groups - 100 to 300
      • Roles - 250 to 1000
      • Instance profiles - 100 to 1000
      • Policies - 1000 to 1500
  • Fix dev/terraform.py and dev/integration_test_iam.tf for integration tests.
  • Fix date and incorrect project name in some file/copyright headers.
  • Issue #331 - Change layout of the generated Supported Limits documentation page to be more clear about which limits are supported, and include API and Trusted Advisor data in the same table as the limits and their defaults.
awslimitchecker - 3.0.0 released 2017-12-02

Published by jantman almost 7 years ago

Important Notice for python 2.6 and 3.3 users:

Python 2.6 reached its end of life in October 2013. Python 3.3 officially reached its end of life in September 2017, five years after development was ceased. The test framework used by awslimitchecker, pytest, has dropped support for Python 2.6 and 3.3 in its latest release. According to the PyPI download statistics (which unfortunately don't take into account mirrors or caching proxies), awslimitchecker has only ever had one download reported as Python 3.3 and has a very, very small number reporting as Python 2.6 (likely only a handful of users). The next release of awslimitchecker will officially drop support for Python 2.6 and 3.3, changing the required Python version to 2.7 or >= 3.4. If you are one of the very few (perhaps only one) users running on Python 2.6, you can either run with a newer Python version or see Issue 301 for information on building a Docker container based on Python 3.5.

  • Fix test failures caused by dependency updates.
  • Pin pytest development to 3.2.5 to continue python 2.6 and 3.3 support.
  • Issue #314 - Update RDS service default limits; DB snapshots per user default limit increased from 50 to 100 and Subnet Groups limit increased from 20 to 50. This should not have affected any users, as these limits are retrieved in realtime via the RDS API.
  • Issue #293 - Increase maximum number of retries (boto3/botocore) for elbv2 API calls, to attempt to deal with the large number of calls we have to make in order to count the ALB listeners and rules. This requires botocore >= 1.6.0, which requires boto3 >= 1.4.6.
  • Issue #315 - Add new instance types: 'c5.18xlarge', 'c5.2xlarge', 'c5.4xlarge', 'c5.9xlarge', 'c5.large', 'c5.xlarge', 'g3.16xlarge', 'g3.4xlarge', 'g3.8xlarge', 'h1.16xlarge', 'h1.2xlarge', 'h1.4xlarge', 'h1.8xlarge', 'm5.12xlarge', 'm5.24xlarge', 'm5.2xlarge', 'm5.4xlarge', 'm5.large', 'm5.xlarge', 'p3.16xlarge', 'p3.2xlarge', 'p3.8xlarge', 'x1e.32xlarge', 'x1e.xlarge'
  • Issue #316 - Automate release process.
awslimitchecker - 2.0.0 released 2017-10-12

Published by jantman about 7 years ago

  • Update README with correct boto version requirement. (Thanks to nadlerjessie for the contribution.)
  • Update minimum boto3 version requirement from 1.2.3 to 1.4.4; the code for Issue #268 released in 0.11.0 requires boto3 >= 1.4.4 to make the ElasticLoadBalancing DescribeAccountLimits call.
  • Bug fix for "Running On-Demand EC2 instances" limit - Issue #308 - The fix for Issue #215 / PR #223, released in 0.6.0 on November 11, 2016 was based on incorrect information about how Regional Benefit Reserved Instances (RIs) impact the service limit. The code implemented at that time subtracted Regional Benefit RIs from the count of running instances that we use to establish usage. Upon further review, as well as confirmation from AWS Support, some AWS TAMs, and the relevant AWS documentation, only Zonal RIs (AZ-specific) are exempt from the Running On-Demand Instances limit. Regional Benefit RIs are counted the same as any other On-Demand Instances, as they don't have reserved capacity. This release stops subtracting Regional Benefit RIs from the count of Running Instances, which was causing awslimitchecker to report inaccurately low Running Instances usage.
awslimitchecker - 1.0.0 released 2017-09-21

Published by jantman about 7 years ago

This release requires new IAM permissions:

  • apigateway:GET
  • apigateway:HEAD
  • apigateway:OPTIONS
  • ec2:DescribeVpnGateways
  • dynamodb:DescribeLimits
  • dynamodb:DescribeTable
  • dynamodb:ListTables

Changes in this release:

  • Issue #254 - Officially adopt SemVer for this project, and document our versioning policy.
  • Issue #294 - Ignore NAT Gateways that are not in "available" or "pending" state.
  • Issue #253 - Check latest awslimitchecker version on PyPI at class instantiation; log warning if a newer version is available. Add Python API and CLI options to disable this.
  • Pin tox version to 2.7.0 as workaround for parsing change.
  • Issue #292 - Add support for API Gateway limits.
  • PR #302 - Add support for VPC VPN Gateways limit. (Thanks to andrewmichael for the contribution.)
  • Issue #280 / PR #297 - Add support for DynamoDB limits. (Thanks to saratlingamarla for the contribution.)
awslimitchecker - 0.11.0 released 2017-08-06

Published by jantman about 7 years ago

This release requires new IAM permissions:

  • elasticfilesystem:DescribeFileSystems
  • elasticloadbalancing:DescribeAccountLimits
  • elasticloadbalancing:DescribeListeners
  • elasticloadbalancing:DescribeTargetGroups
  • elasticloadbalancing:DescribeRules

Changes in this release:

  • Issue #287 / PR #288 - Add support for Elastic Filesystem number of filesystems limit. (Thanks to nicksantamaria for the contribution.)
  • Issue #268 - Add support for ELBv2 (Application Load Balancer) limits; get ELBv1 (Classic) and ELBv2 (Application) limits from the DescribeAccountLimits API calls.
awslimitchecker - 0.10.0 released 2017-06-25

Published by jantman over 7 years ago

This release removes the ElastiCache Clusters limit, which no longer exists.

  • Issue #283 - Add gitter.im chat link to README and docs.
  • Issue #282 - versionfinder caused awslimitchecker to die unexpectedly on systems without a git binary on the PATH. Bump versionfinder requirement to >= 0.1.1.
  • Issue #284 - Fix ElastiCache limits to reflect what AWS Support and the current documentation say, instead of a support ticket from July 2015.
    • Remove the "Clusters" limit, which no longer exists.
    • "Nodes per Cluster" limit is Memcached only.
    • Add "Subnets per subnet group" limit.
  • Issue #279 - Add Github release to release process.
awslimitchecker - 0.9.0 Released 2017-06-11

Published by jantman over 7 years ago

  • Issue #269 - set Trusted Advisor limit name overrides for some RDS limits that were recently added to TA, but with different names than what awslimitchecker uses.
  • Fix bug Issue #270 -do not count propagated routes towards the VPC “Entries per route table” limit, per clarification in VPC service limits documentation (“This is the limit for the number of non-propagated entries per route table.”)
  • PR #276 / Issue #275 - Add new --skip-service CLI option and :py~.AwsLimitChecker.remove_services to allow skipping of one or more specific services during runs. (Thanks to tamsky) for this contribution.)
  • PR #274 / Issue #273 - Add support for new i3 EC2 Instance types. (Thanks to tamsky) for this contribution.)
  • Fix broken docs build due to changes Intersphinx reference to ValueError in python2 docs
  • Add hack to docs/source/conf.py as workaround for https://github.com/sphinx-doc/sphinx/issues/3860
  • Issue #267 - Firehose is only available in us-east-1, us-west-2 and eu-west-1. Omit the traceback from the log message for Firehose EndpointConnectionError and log at warning instead of error.
awslimitchecker - 0.8.0 Released 2017-03-11

Published by jantman over 7 years ago

This release includes a breaking API change. Please see the first bullet point below. Note that once 1.0.0 is released (which should be relatively soon), such API changes will only come with a major version increment.

This release requires new IAM permissions: redshift:DescribeClusterSnapshots and redshift:DescribeClusterSubnetGroups.

This release removes Python 3.2 support. This was deprecated in 0.7.0. As of this release, awslimitchecker may still work on Python 3.2, but it is no longer tested and any support tickets or bug reports specific to 3.2 will be closed.

  • PR #250 - Allow the --service command line option to accept multiple values. This is a breaking public API change; the awslimitchecker.checker.AwsLimitChecker check_thresholds, find_usage, and get_limits methods now take an optional service list keyword argument instead of a string for a single service name.
  • PR #251 - Handle GovCloud-specific edge cases; specifically, UnsupportedOperation errors for EC2 Spot Instance-related API calls, and limits returned as 0 by the DescribeAccountAttributes EC2 API action.
  • PR #249 - Add support for RedShift limits (Redshift subnet groups and Redshift manual snapshots). This requires the redshift:DescribeClusterSnapshots and redshift:DescribeClusterSubnetGroups IAM permissions.
  • Issue #259 - remove duplicates from required IAM policy returned by awslimitchecker.checker.AwsLimitChecker.get_required_iam_policy and awslimitchecker --iam-policy.
  • Various TravisCI/tox build fixes:
    • Fix pip caching; use default pip cache directory
    • Add python 3.6 tox env and Travis env, now that it’s released
    • Switch integration3 tox env from py3.4 to py3.6
  • PR #256 - Add example of wrapping awslimitchecker in a script to send metrics to Prometheus.
  • Issue #236 - Drop support for Python 3.2; stop testing under py32.
  • Issue #257 - Handle ElastiCache DescribeCacheCluster responses that are missing CacheNodes key in a cluster description.
  • Issue #200 - Remove EC2 Spot Instances/Fleets limits fro
awslimitchecker - 0.7.0

Published by jantman almost 8 years ago

This release deprecates support for Python 3.2. It will be removed in the next release.

This release introduces support for automatically refreshing Trusted Advisor checks on accounts that support this. If you use this new feature, awslimitchecker will require a new permission, trustedadvisor:RefreshCheck. See Getting Started - Trusted Advisor for further information.

  • #231 - add support for new f1, r4 and t2.(xlarge|2xlarge) instance types, introduced in November 2016.
  • #230 - replace the built-in versioncheck.py with versionfinder. Remove all of the many versioncheck tests.
  • #233 - refactor tests to replace yield-based tests with parametrize, as yield-based tests are deprecated and will be removed in pytest 4.
  • #235 - Deprecate Python 3.2 support. There don’t appear to have been any downloads on py32 in the last 6 months, and the effort to support it is too high.
  • A bunch of Sphinx work to use README.rst in the generated documentation.
  • Changed DEBUG-level logging format to include timestamp.
  • #239 - Support refreshing Trusted Advisor check results during the run, and optionally waiting for refresh to finish. See Getting Started - Trusted Advisor for further information.
  • #241 / PR #242 -Fix default ElastiCache/Nodes limit from 50 to 100, as that’s now what the docs say.
  • #220 / PR #243 / PR #245 - Fix for ExpiredTokenException Errors. awslimitchecker.connectable.credentials has been removed. In previous releases, awslimitchecker had been using a Connectable.credentials class attribute to store AWS API credentials and share them between Connectable subclass instances. The side-effect of this was that AWS credentials were set at the start of the Python process and never changed. For users taking advantage of the Python API and either using short-lived STS credentials or using long-running or threaded implementations, the same credentials persisted for the life of the process, and would often result in ExpiredTokenExceptions. The fix was to move `_boto_conn_kwargs <http://awslimit
Package Rankings
Top 28.29% on Conda-forge.org
Top 4.07% on Pypi.org
Related Projects