CDK construct for static websites for CDK v2
Project description
CDK Static Website Construct
This package contains a high-level CDK construct for describing the infrastructure of
a static website. The construct also features a deploy
method to deploy static assets
for the website and invalidate the CloudFront distribution.
The CDK construct creates the private S3 bucket, where the website is hosted. The contents of the bucket are exposed through a CloudFront distribution. Rather than allowing public access to the bucket, OAI is used to allow access from CloudFront only.
Further reading: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html
This construct also creates the necessary Route 53 records to route requests to the CloudFront distribution. It also configures the distribution with a supplied SSL certificate.
Pre-requisites
This construct works with recent versions of CDK v2. There are similar constructs on PyPI for v1 - one of the motivations for this package was to support v2.
If you are not familiar with CDK, have a read here.
Registering a domain name, creating the hosted zone in Route 53 and creating the SSL certificate are not in scope for this construct. These can be created manually or through other automated ways on AWS.
Note, the certificate needs to be created in North Virginia (us-east-1).
Once these are created, you should have all the necessary inputs: the domain name, domain certificate ARN, the hosted zone ID and the hosted zone name.
How to use it?
Install the package using your favourite package manager, e.g.
pip install cdk-static-site
Within your stack, instantiate the construct
from static_site import StaticSite
site = StaticSite(
scope=self,
construct_id="StaticSite",
site_domain_name=site_domain_name,
hosted_zone_id=hosted_zone_id,
hosted_zone_name=hosted_zone_name,
domain_certificate_arn=domain_certificate_arn,
)
and finally, deploy the static contents by supplying the directory path
to deploy
:
from pathlib import Path
contents_path = Path.cwd() / "public" # or wherever your assets are located
site.deploy(contents_path.as_posix())
Contribution
If you find any issues, or have suggestions to improve the construct, feel free to open an issue/PR.
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
File details
Details for the file cdk-static-site-0.1.2.tar.gz
.
File metadata
- Download URL: cdk-static-site-0.1.2.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.7 Darwin/21.1.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c0898285875019a63f01ae70558483c6c741cda42739f4afdd9d1bce71d73f2 |
|
MD5 | 63eeaf82763f011dd054603c5e87cb8a |
|
BLAKE2b-256 | 8776cdc7c2c6c8513af120d0886ea141217a2dbeef13b3613628a576f1f9a91c |
File details
Details for the file cdk_static_site-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: cdk_static_site-0.1.2-py3-none-any.whl
- Upload date:
- Size: 4.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.7 Darwin/21.1.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b5caa445260ce7c880f625d3495850d64a75b6bac576e8b98cd640a751057ef |
|
MD5 | 423f528f88079ff72bc58e230773be3a |
|
BLAKE2b-256 | fbe93189e5d38354e9585359d57cd9971899b9b40bb17151a5df86a20e2a4298 |