A script and python package to check your AWS service limits and usage via boto3.
AGPL-3.0 License
Published by jantman about 6 years ago
t3
EC2 instance types (thanks to chafouin).py37
TravisCI tests from py37-dev to py37 (release).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.
awslimitchecker
CLI output format and some minor API changes.
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.
Published by jantman over 6 years ago
This is a minor bugfix release for one issue:
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.Published by jantman over 6 years ago
This is a minor bugfix release for a few issues that users have reported recently.
status: not_available
or a missing flaggedResources
key.Published by jantman over 6 years ago
This release requires new IAM permissions:
ds:GetDirectoryLimits
ecs:DescribeClusters
ecs:DescribeServices
ecs:ListClusters
ecs:ListServices
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
.dev/terraform.py
and dev/integration_test_iam.tf
for integration tests.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.
pytest
development to 3.2.5 to continue python 2.6 and 3.3 support.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.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.Published by jantman about 7 years ago
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.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:
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:
Published by jantman over 7 years ago
This release removes the ElastiCache Clusters limit, which no longer exists.
git
binary on the PATH. Bump versionfinder requirement to >= 0.1.1
.Published by jantman over 7 years ago
--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.)i3
EC2 Instance types. (Thanks to tamsky) for this contribution.)docs/source/conf.py
as workaround for https://github.com/sphinx-doc/sphinx/issues/3860
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.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.
--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.redshift:DescribeClusterSnapshots
and redshift:DescribeClusterSubnetGroups
IAM permissions.awslimitchecker.checker.AwsLimitChecker.get_required_iam_policy
and awslimitchecker --iam-policy
.CacheNodes
key in a cluster description.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.
versioncheck.py
with versionfinder. Remove all of the many versioncheck tests.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