Skip to main content

CDK Construct for a private frontend hosting S3 bucket

Project description

CDK Private S3 Hosting Construct

This is a CDK construct that creates a private S3 bucket and an Application Load Balancer (ALB) with a listener rule that forwards requests to the S3 bucket.

You can use this construct for a enterprise use case where you want to host a static website in a private network.

Original idea is from this blog post.

Architecture

Architecture

Usage

To create a private S3 bucket and an ALB with a listener rule that forwards requests to the S3 bucket, you can use the following code:

import { PrivateS3Hosting } from 'cdk-private-s3-hosting';

const privateS3Hosting = new PrivateS3Hosting(this, 'PrivateS3Hosting', {
  domainName: 'cryer-nao-domain.com',
});

After you deploy the stack, you can access the S3 bucket using the ALB's DNS name from the VPC where the stack is deployed.

For example, if you put the hoge.txt file in the S3 bucket, you can access it using the following command:

curl http://cryer-nao-domain.com/hoge.txt

Deploy the frontend assets

You can deploy the frontend assets to the S3 bucket like below:

import { PrivateS3Hosting } from 'cdk-private-s3-hosting';
import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment';

const privateS3Hosting = new PrivateS3Hosting(this, 'PrivateS3Hosting', {
  domainName: 'cryer-nao-domain.com',
});

new s3deploy.BucketDeployment(this, 'DeployWebsite', {
  sources: [s3deploy.Source.asset('./website-dist')],
  destinationBucket: websiteBucket,
  bucket: privateS3Hosting.bucket,
});

After deploying the stack, you can access the website using the domainName you specified from the VPC.

curl http://cryer-nao-domain.com

Note: All access to the path pattern */ will be redirected to /index.html. Therefore, it will function correctly even when the path is set on the frontend and the page is reloaded.

Project details


Download files

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

Source Distribution

cdk_private_s3_hosting-0.0.0.tar.gz (55.1 kB view details)

Uploaded Source

Built Distribution

cdk_private_s3_hosting-0.0.0-py3-none-any.whl (53.9 kB view details)

Uploaded Python 3

File details

Details for the file cdk_private_s3_hosting-0.0.0.tar.gz.

File metadata

File hashes

Hashes for cdk_private_s3_hosting-0.0.0.tar.gz
Algorithm Hash digest
SHA256 e01227efcb47fa300aa8a94f48effd8585b53429aa25780900775f067a5a3360
MD5 fd0497e53008cc44af6d099ad4fd3165
BLAKE2b-256 9dfa931c04faf8667aa17d609a3daaf00f77da933ebf3770918d481f83b71006

See more details on using hashes here.

File details

Details for the file cdk_private_s3_hosting-0.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for cdk_private_s3_hosting-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bea0d58a7458c3b2613eb2a6406193667f4c1094e42d423daf2ab3a996f7a81f
MD5 be4f7ba535b20862ae5c89aef9fa7e37
BLAKE2b-256 5575e5ca8dd225f7d5c29863641737abb8eca4539a32dcfafb75b5b142f27dce

See more details on using hashes here.

Supported by

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