From 98f6568d13f177cd168c84897157a49d64fb9395 Mon Sep 17 00:00:00 2001 From: vickytechkey Date: Thu, 20 Aug 2026 11:33:15 +0530 Subject: [PATCH] adding s3 and cloufront --- aws_cdk/lib/aws_cdk-stack.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/aws_cdk/lib/aws_cdk-stack.ts b/aws_cdk/lib/aws_cdk-stack.ts index 26c40cd..663b961 100644 --- a/aws_cdk/lib/aws_cdk-stack.ts +++ b/aws_cdk/lib/aws_cdk-stack.ts @@ -4,6 +4,9 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2'; import * as iam from 'aws-cdk-lib/aws-iam'; import * as dlm from 'aws-cdk-lib/aws-dlm'; import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager'; +import * as s3 from 'aws-cdk-lib/aws-s3'; +import * as cloudfront from 'aws-cdk-lib/aws-cloudfront'; +import * as origins from 'aws-cdk-lib/aws-cloudfront-origins'; export class AwsCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { @@ -131,6 +134,29 @@ export class AwsCdkStack extends cdk.Stack { ], })); + // Create the S3 bucket for supplier documents + const supplierDocumentBucket = new s3.Bucket(this, 'BetaSupplierDocumentStorageBucket', { + bucketName: 'betasupplierdocumentstorage', + removalPolicy: cdk.RemovalPolicy.DESTROY, + autoDeleteObjects: true, + blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, + encryption: s3.BucketEncryption.S3_MANAGED, + }); + + // Create CloudFront Distribution for the S3 bucket + const distribution = new cloudfront.Distribution(this, 'SupplierDocumentDistribution', { + defaultBehavior: { + origin: new origins.S3Origin(supplierDocumentBucket), + viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, + allowedMethods: cloudfront.AllowedMethods.ALLOW_GET_HEAD, + cachedMethods: cloudfront.CachedMethods.CACHE_GET_HEAD, + cachePolicy: cloudfront.CachePolicy.CACHING_OPTIMIZED, + }, + }); + + // Grant EC2 IAM role read/write permissions to the new S3 bucket + supplierDocumentBucket.grantReadWrite(role); + // 3. Define the EC2 Instance (t4g.medium) const instance = new ec2.Instance(this, 'internalsInstance', { vpc, @@ -307,6 +333,11 @@ export class AwsCdkStack extends cdk.Stack { value: dbSecret.secretArn, description: 'ARN of the DB credentials secret in Secrets Manager', }); + + new cdk.CfnOutput(this, 'SupplierDocumentCloudFrontDomain', { + value: distribution.distributionDomainName, + description: 'CloudFront Distribution Domain Name for Supplier Documents', + }); } }