AWS CDK Construct Library to manage Lets Encrypt certificate renewals with Certbot
Project description
cdk-library-certbot
A CDK Construct Library to automate the creation and renewal of Let's Encrypt certificates.
Features
- Creates a lambda function that utilizes Certbot to request a certificate from Let's Encrypt
- Uploads the resulting certificate data to S3 for later retrieval
- Imports the certificate to AWS Certificate Manager for tracking expiration
- Creates a trigger to re-run and re-new if the cert will expire in the next 30 days (customizable)
API Doc
See API
References
Original [gist](# Modified from original gist https://gist.github.com/arkadiyt/5d764c32baa43fc486ca16cb8488169a) that was modified for the Lambda code
Examples
This construct utilizes a Route 53 hosted zone lookup so it will require that your stack has [environment variables set for account and region](See https://docs.aws.amazon.com/cdk/latest/guide/environments.html for more details.).
Typescript
import * as cdk from '@aws-cdk/core';
import { Certbot } from '@renovosolutions/cdk-library-certbot';
import { Architecture } from '@aws-cdk/aws-lambda';
export class CdkExampleCertsStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
let domains = [
'example.com',
'www.example.com'
]
new Certbot(this, 'cert', {
letsencryptDomains: domains.join(','),
letsencryptEmail: 'webmaster+letsencrypt@example.com',
hostedZoneNames: [
'example.com'
]
})
}
}
Typescript with zone creation in the same stack
import * as cdk from '@aws-cdk/core';
import * as route53 from '@aws-cdk/aws_route53';
import { Certbot } from '@renovosolutions/cdk-library-certbot';
import { Architecture } from '@aws-cdk/aws-lambda';
export class CdkExampleCertsStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const hostedZone = new r53.HostedZone(this, 'authZone', {
zoneName: 'auth.example.com',
});
let domains = [
'example.com',
'www.example.com',
'auth.example.com'
]
new Certbot(this, 'cert', {
letsencryptDomains: domains.join(','),
letsencryptEmail: 'webmaster+letsencrypt@example.com',
hostedZoneNames: [
'example.com'
],
hostedZones: [
hostedZone,
]
})
}
}
Python
from aws_cdk import (
core as cdk
)
from certbot import Certbot
class CdkExampleCertsStack(cdk.Stack):
def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
Certbot(self, "certbot",
letsencrypt_email="webmaster+letsencrypt@example.com",
letsencrypt_domains="example.com",
hosted_zone_names=["example.com"]
)
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
Built Distribution
Close
Hashes for renovosolutions.aws-cdk-certbot-2.4.5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c8f48a6d81c19747f4680db3e05a6c4a4f95e58fceeb40b5e2bf7dea359ef87 |
|
MD5 | f9324622bdb1ff9a22dc557b0da0ab4d |
|
BLAKE2b-256 | 0da141ae677700d5518cf87918ac18fcdf35379119299789c829d90742f68bb9 |
Close
Hashes for renovosolutions.aws_cdk_certbot-2.4.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72182f209001a7b27ee0aaa5d03cd73f6883330014deeb5f38ec548e5ae5f46a |
|
MD5 | 2bed7aae4996c9854ce9206c399c2a9b |
|
BLAKE2b-256 | 2e8332e923bafe9fd78b55c8acd8b412f641f01862acfd0dd36c55f7b9a784d8 |