Skip to main content

The CDK Construct Library for AWS::CertificateManager

Project description

AWS Certificate Manager Construct Library

---

cfn-resources: Stable

cdk-constructs: Stable


AWS Certificate Manager (ACM) handles the complexity of creating, storing, and renewing public and private SSL/TLS X.509 certificates and keys that protect your AWS websites and applications. ACM certificates can secure singular domain names, multiple specific domain names, wildcard domains, or combinations of these. ACM wildcard certificates can protect an unlimited number of subdomains.

This package provides Constructs for provisioning and referencing ACM certificates which can be used with CloudFront and ELB.

After requesting a certificate, you will need to prove that you own the domain in question before the certificate will be granted. The CloudFormation deployment will wait until this verification process has been completed.

Because of this wait time, when using manual validation methods, it's better to provision your certificates either in a separate stack from your main service, or provision them manually and import them into your CDK application.

Note: There is a limit on total number of ACM certificates that can be requested on an account and region within a year. The default limit is 2000, but this limit may be (much) lower on new AWS accounts. See https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html for more information.

DNS validation

DNS validation is the preferred method to validate domain ownership, as it has a number of advantages over email validation. See also Validate with DNS in the AWS Certificate Manager User Guide.

If Amazon Route 53 is your DNS provider for the requested domain, the DNS record can be created automatically:

# Example automatically generated from non-compiling source. May contain errors.
import aws_cdk.aws_certificatemanager as acm
import aws_cdk.aws_route53 as route53

my_hosted_zone = route53.HostedZone(self, "HostedZone",
    zone_name="example.com"
)
acm.Certificate(self, "Certificate",
    domain_name="hello.example.com",
    validation=acm.CertificateValidation.from_dns(my_hosted_zone)
)

If Route 53 is not your DNS provider, the DNS records must be added manually and the stack will not complete creating until the records are added.

# Example automatically generated from non-compiling source. May contain errors.
acm.Certificate(self, "Certificate",
    domain_name="hello.example.com",
    validation=acm.CertificateValidation.from_dns()
)

When working with multiple domains, use the CertificateValidation.fromDnsMultiZone():

# Example automatically generated from non-compiling source. May contain errors.
example_com = route53.HostedZone(self, "ExampleCom",
    zone_name="example.com"
)
example_net = route53.HostedZone(self, "ExampleNet",
    zone_name="example.net"
)

cert = acm.Certificate(self, "Certificate",
    domain_name="test.example.com",
    subject_alternative_names=["cool.example.com", "test.example.net"],
    validation=acm.CertificateValidation.from_dns_multi_zone(
        test.example.com=example_com,
        cool.example.com=example_com,
        test.example.net=example_net
    )
)

Email validation

Email-validated certificates (the default) are validated by receiving an email on one of a number of predefined domains and following the instructions in the email.

See Validate with Email in the AWS Certificate Manager User Guide.

# Example automatically generated from non-compiling source. May contain errors.
acm.Certificate(self, "Certificate",
    domain_name="hello.example.com",
    validation=acm.CertificateValidation.from_email()
)

Cross-region Certificates

ACM certificates that are used with CloudFront -- or higher-level constructs which rely on CloudFront -- must be in the us-east-1 region. The DnsValidatedCertificate construct exists to facilitate creating these certificates cross-region. This resource can only be used with Route53-based DNS validation.

# Example automatically generated from non-compiling source. May contain errors.
acm.DnsValidatedCertificate(self, "CrossRegionCertificate",
    domain_name="hello.example.com",
    hosted_zone=my_hosted_zone,
    region="us-east-1"
)

Requesting private certificates

AWS Certificate Manager can create private certificates issued by Private Certificate Authority (PCA). Validation of private certificates is not necessary.

# Example automatically generated from non-compiling source. May contain errors.
import aws_cdk.aws_acmpca as acmpca

acm.PrivateCertificate(stack, "PrivateCertificate",
    domain_name="test.example.com",
    subject_alternative_names=["cool.example.com", "test.example.net"],  # optional
    certificate_authority=acmpca.CertificateAuthority.from_certificate_authority_arn(stack, "CA", "arn:aws:acm-pca:us-east-1:123456789012:certificate-authority/023077d8-2bfa-4eb0-8f22-05c96deade77")
)

Importing

If you want to import an existing certificate, you can do so from its ARN:

# Example automatically generated from non-compiling source. May contain errors.
arn = "arn:aws:..."
certificate = Certificate.from_certificate_arn(self, "Certificate", arn)

Sharing between Stacks

To share the certificate between stacks in the same CDK application, simply pass the Certificate object between the stacks.

Metrics

The DaysToExpiry metric is available via the metricDaysToExpiry method for all certificates. This metric is emitted by AWS Certificates Manager once per day until the certificate has effectively expired.

An alarm can be created to determine whether a certificate is soon due for renewal ussing the following code:

# Example automatically generated from non-compiling source. May contain errors.
certificate = Certificate(self, "Certificate")
certificate.metric_days_to_expiry().create_alarm(
    comparison_operator=cloudwatch.ComparisonOperator.LESS_THAN_THRESHOLD,
    evaluation_periods=1,
    threshold=45
)

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aws-cdk.aws-certificatemanager-1.136.0.tar.gz (263.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aws_cdk.aws_certificatemanager-1.136.0-py3-none-any.whl (262.3 kB view details)

Uploaded Python 3

File details

Details for the file aws-cdk.aws-certificatemanager-1.136.0.tar.gz.

File metadata

  • Download URL: aws-cdk.aws-certificatemanager-1.136.0.tar.gz
  • Upload date:
  • Size: 263.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.6.5

File hashes

Hashes for aws-cdk.aws-certificatemanager-1.136.0.tar.gz
Algorithm Hash digest
SHA256 fae2e6a7f70d2e7ecaf083752205a82f29f6379d51b4a54bb104bcc056f640a3
MD5 6e78ddcc484ed1d57d70b0b25fae5910
BLAKE2b-256 33ba716773057ac24d53beda72aedb1bf0d253424142a21a1acc1baf60216377

See more details on using hashes here.

File details

Details for the file aws_cdk.aws_certificatemanager-1.136.0-py3-none-any.whl.

File metadata

  • Download URL: aws_cdk.aws_certificatemanager-1.136.0-py3-none-any.whl
  • Upload date:
  • Size: 262.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.6.5

File hashes

Hashes for aws_cdk.aws_certificatemanager-1.136.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4fa5760ff57e30ad0c0aac6156c0302ae7cc7051d28a87c31b7e9942d2a72a96
MD5 c9eb22c450e5f0bf8d2271327e7df7f4
BLAKE2b-256 b0e095c2f819d9d10cc7bf18f84a4a4b73d65f4c0bf21b10ea8ca8e8684a0bfb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page