jantman / awslimitchecker

A script and python package to check your AWS service limits and usage via boto3.
http://awslimitchecker.readthedocs.org/
GNU Affero General Public License v3.0
514 stars 188 forks source link

Support CertificateManager service #546

Closed TagadaPoe closed 3 years ago

TagadaPoe commented 3 years ago

Before submitting pull requests, please see the Development documentation and specifically the Pull Request Guidelines.

IMPORTANT: Please take note of the below checklist, especially the first three items.

Summary

Relates to #540

Add support for the Certificate Manager service (ACM)

Only the quota "Number of ACM certificates" is checked.

Added unit tests.

Here are the Quotas for the ACM service, as specified in the documentation (https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html)

Number of ACM certificates (default: 1000) New AWS accounts may start with a quota lower than the maximum. Expired and revoked certificates continue to count toward the total. Certificates signed by a CA from ACM Private CA do not count toward this total.

Number of ACM certificates per year (last 365 days) (default: twice the quota above) You can request up to twice your quota of ACM certificates per year, region, and account. For example, if your quota is 1,000, you can request up to 2,000 ACM certificates per year in a given region and account. You can only have 1,000 certificates at any given time. To request 2,000 certificates in a year, you must delete 1,000 during the year to stay within the quota. If you need more than 1,000 certificates at any given time, you must contact the AWS Support Center. Certificates signed by a CA from ACM Private CA do not count toward this total.

Number of imported certificates (default: 1000)

Number of imported certificates per year (last 365 days) (default: Twice your account quota)

I did not implement the check of limit "Number of ACM certificates per year", because I have no idea how to check it :) This usage "per-year" counts all created certificates, including those that do not exist anymore, hence I assume they will not be listed by the API.

I did not implement the check of limit "Number of imported certificates", because the information of whether a certificate was imported or not is not available in the list_certificates API call, but only in the describe_certificate, and I did not want to make 1 additional call per certificate.

Also, I assumed that imported certificates count toward the total of ACM certificates. But this is not clear from AWS documentation. If I am wrong, awslimitchecker may report a false alert if part of the ACM certificates are imported.

Pull Request Checklist

Contributor License Agreement

By submitting this work for inclusion in awslimitchecker, I agree to the following terms:

codecov-commenter commented 3 years ago

Codecov Report

Merging #546 (f6c7ff2) into develop (a829ce2) will not change coverage. The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff            @@
##           develop      #546   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           42        43    +1     
  Lines         3030      3064   +34     
  Branches       455       458    +3     
=========================================
+ Hits          3030      3064   +34     
Impacted Files Coverage Δ
awslimitchecker/services/__init__.py 100.00% <100.00%> (ø)
awslimitchecker/services/certificatemanager.py 100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update a829ce2...f6c7ff2. Read the comment docs.

jantman commented 3 years ago

@TagadaPoe I'm going to try to get to these PRs today, sorry for the delay. Could you please update your PR to allow changes from maintainers? This needs to be rebased on develop, and the others will need to be rebased as I merge them in. Thanks!

jantman commented 3 years ago

Thank you so much for this, and many apologies for it sitting so long!

jantman commented 3 years ago

This has been released in 12.0.0, which is now live on PyPI and Docker Hub. Thank you so much, and apologies for the delay!