From 23353f2a4fa5d63e2880a2ae303fee587d79dbdf Mon Sep 17 00:00:00 2001 From: vickytechkey Date: Sat, 3 Oct 2026 16:30:57 +0530 Subject: [PATCH] feat: add AWS CDK stacks for domain routing, DNS records, and SSL certificates --- mainsite/mainsite_stack.py | 80 ++++++++++++++++++++++++++++ tradhoxdomain/tradhoxdomain_stack.py | 18 ++++++- 2 files changed, 96 insertions(+), 2 deletions(-) diff --git a/mainsite/mainsite_stack.py b/mainsite/mainsite_stack.py index 750acd1..49faf11 100644 --- a/mainsite/mainsite_stack.py +++ b/mainsite/mainsite_stack.py @@ -86,3 +86,83 @@ class MainsiteStack(Stack): record_name="beta", target=route53.RecordTarget.from_alias(targets.CloudFrontTarget(self.beta_distribution)) ) + + # 7. CSA Website S3 Bucket + csa_bucket = s3.Bucket( + self, "CsaWebsiteBucket", + bucket_name="csawebsite", + block_public_access=s3.BlockPublicAccess.BLOCK_ALL, + removal_policy=RemovalPolicy.RETAIN, + ) + + # 8. CSA Website CloudFront Distribution + self.csa_distribution = cloudfront.Distribution( + self, "CsaWebsiteDistribution", + default_behavior=cloudfront.BehaviorOptions( + origin=origins.S3BucketOrigin.with_origin_access_control(csa_bucket), + viewer_protocol_policy=cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, + ), + domain_names=["csa.tradhox.com"], + certificate=us_east_1_cert, + default_root_object="index.html", + error_responses=[ + cloudfront.ErrorResponse( + http_status=403, + response_http_status=200, + response_page_path="/index.html", + ), + cloudfront.ErrorResponse( + http_status=404, + response_http_status=200, + response_page_path="/index.html", + ), + ], + ) + + # 9. Beta CSA Site S3 Bucket + betacsa_bucket = s3.Bucket( + self, "BetaCsaSiteBucket", + bucket_name="betacsa", + block_public_access=s3.BlockPublicAccess.BLOCK_ALL, + removal_policy=RemovalPolicy.RETAIN, + ) + + # 10. Beta CSA Site CloudFront Distribution + self.betacsa_distribution = cloudfront.Distribution( + self, "BetaCsaSiteDistribution", + default_behavior=cloudfront.BehaviorOptions( + origin=origins.S3BucketOrigin.with_origin_access_control(betacsa_bucket), + viewer_protocol_policy=cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, + ), + domain_names=["betacsa.tradhox.com"], + certificate=us_east_1_cert, + default_root_object="index.html", + error_responses=[ + cloudfront.ErrorResponse( + http_status=403, + response_http_status=200, + response_page_path="/index.html", + ), + cloudfront.ErrorResponse( + http_status=404, + response_http_status=200, + response_page_path="/index.html", + ), + ], + ) + + # 11. Route53 Records for CSA Site + route53.ARecord( + self, "CsaDomainRecord", + zone=hosted_zone, + record_name="csa", + target=route53.RecordTarget.from_alias(targets.CloudFrontTarget(self.csa_distribution)) + ) + + # 12. Route53 Records for Beta CSA Site + route53.ARecord( + self, "BetaCsaDomainRecord", + zone=hosted_zone, + record_name="betacsa", + target=route53.RecordTarget.from_alias(targets.CloudFrontTarget(self.betacsa_distribution)) + ) diff --git a/tradhoxdomain/tradhoxdomain_stack.py b/tradhoxdomain/tradhoxdomain_stack.py index d7a5d1c..5bd1150 100644 --- a/tradhoxdomain/tradhoxdomain_stack.py +++ b/tradhoxdomain/tradhoxdomain_stack.py @@ -57,8 +57,8 @@ class TradhoxdomainStack(Stack): "betasearchengine", "searchengine-api", "betasearch-api", - "csa", - "betacsa", + "apicsa", + "betaapicsa", ] # Target IP address provided by the user @@ -233,6 +233,20 @@ class TradhoxdomainStack(Stack): validation=acm.CertificateValidation.from_dns(hosted_zone), ) + # SSL Certificate for apicsa.tradhox.com with Route53 DNS validation + self.apicsa_certificate = acm.Certificate( + self, "ApiCsaCertificate", + domain_name="apicsa.tradhox.com", + validation=acm.CertificateValidation.from_dns(hosted_zone), + ) + + # SSL Certificate for betaapicsa.tradhox.com with Route53 DNS validation + self.betaapicsa_certificate = acm.Certificate( + self, "BetaApiCsaCertificate", + domain_name="betaapicsa.tradhox.com", + validation=acm.CertificateValidation.from_dns(hosted_zone), + ) + # SSL Certificate for tradhox.com with Route53 DNS validation self.tradhox_certificate = acm.Certificate( self, "TradhoxCertificate",