Skip to content
This repository was archived by the owner on Mar 27, 2023. It is now read-only.

Commit cb51701

Browse files
committed
Merge branch '30-refactor-cloudfront-s3-static-site-bucket' into 'develop'
Resolve "Split CloudFront CDK construct into S3 bucket and Web Distribution" Closes #30 See merge request verbose-equals-true/django-postgres-vue-gitlab-ecs!75
2 parents 520216a + 4f5a22c commit cb51701

File tree

5 files changed

+60
-40
lines changed

5 files changed

+60
-40
lines changed

awscdk/awscdk/cdk_app_root.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from alb import ApplicationLoadBalancer
1212
from ecs import Ecs
1313
from env_vars import Variables
14+
from static_site_bucket import StaticSiteBucket
1415

1516
from backend import Backend
1617
from backend_tasks import BackendTasks
@@ -47,10 +48,15 @@ def __init__(
4748
vpc=self.vpc.vpc,
4849
)
4950

51+
self.static_site_bucket = StaticSiteBucket(
52+
self, "StaticSiteBucket", full_app_name=full_app_name
53+
)
54+
5055
self.cloudfront = CloudFront(
5156
self,
5257
"StaticSite",
5358
hosted_zone=self.hosted_zone,
59+
static_site_bucket_name=self.static_site_bucket.static_site_bucket.bucket_name, # noqa
5460
certificate=self.certificate,
5561
alb=self.alb.alb.load_balancer_dns_name,
5662
full_domain_name=full_domain_name,

awscdk/awscdk/cloudfront.py

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ def __init__(
1414
self,
1515
scope: core.Construct,
1616
id: str,
17+
static_site_bucket_name: str,
1718
hosted_zone: route53.IHostedZone,
1819
certificate: acm.ICertificate,
1920
alb: str,
@@ -23,29 +24,9 @@ def __init__(
2324
) -> None:
2425
super().__init__(scope, id, **kwargs)
2526

26-
self.static_site_bucket = s3.Bucket(
27-
self,
28-
"StaticSiteBucket",
29-
access_control=s3.BucketAccessControl.PUBLIC_READ,
30-
bucket_name=f"{full_app_name}-frontend",
31-
removal_policy=core.RemovalPolicy.DESTROY,
32-
website_index_document="index.html",
33-
website_error_document="index.html",
34-
)
35-
36-
self.policy_statement = iam.PolicyStatement(
37-
actions=["s3:GetObject"],
38-
resources=[f"{self.static_site_bucket.bucket_arn}/*"],
39-
)
40-
41-
self.policy_statement.add_any_principal()
42-
43-
self.static_site_policy_document = iam.PolicyDocument(
44-
statements=[self.policy_statement]
27+
s3_website_domain_name = (
28+
f"{static_site_bucket_name}.s3-website-us-east-1.amazonaws.com"
4529
)
46-
47-
self.static_site_bucket.add_to_resource_policy(self.policy_statement)
48-
4930
path_patterns = ["/api/*", "/admin/*", "/flower/*"]
5031
self.distribution = cloudfront.CloudFrontWebDistribution(
5132
self,
@@ -71,7 +52,7 @@ def __init__(
7152
),
7253
cloudfront.SourceConfiguration(
7354
custom_origin_source=cloudfront.CustomOriginConfig(
74-
domain_name=f"{self.static_site_bucket.bucket_name}.s3-website-us-east-1.amazonaws.com",
55+
domain_name=s3_website_domain_name,
7556
origin_protocol_policy=cloudfront.OriginProtocolPolicy.HTTP_ONLY,
7657
),
7758
behaviors=[
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from aws_cdk import (
2+
aws_s3 as s3,
3+
aws_iam as iam,
4+
core,
5+
)
6+
7+
8+
class StaticSiteBucket(core.Construct):
9+
def __init__(
10+
self, scope: core.Construct, id: str, full_app_name: str, **kwargs,
11+
) -> None:
12+
super().__init__(scope, id, **kwargs)
13+
14+
self.static_site_bucket = s3.Bucket(
15+
self,
16+
"StaticSiteBucket",
17+
access_control=s3.BucketAccessControl.PUBLIC_READ,
18+
bucket_name=f"{full_app_name}-frontend",
19+
removal_policy=core.RemovalPolicy.DESTROY,
20+
website_index_document="index.html",
21+
website_error_document="index.html",
22+
)
23+
24+
self.policy_statement = iam.PolicyStatement(
25+
actions=["s3:GetObject"],
26+
resources=[f"{self.static_site_bucket.bucket_arn}/*"],
27+
)
28+
29+
self.policy_statement.add_any_principal()
30+
31+
self.static_site_policy_document = iam.PolicyDocument(
32+
statements=[self.policy_statement]
33+
)
34+
35+
self.static_site_bucket.add_to_resource_policy(self.policy_statement)

awscdk/stack.yml

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,8 @@ Resources:
283283
Ref: VpcC3027511
284284
Metadata:
285285
aws:cdk:path: dev-mysite-com-stack/ApplicationLoadBalancer/ALB/SecurityGroup/Resource
286-
ApplicationLoadBalancerALBSecurityGrouptodevmysitecomstackBackendBackendSecurityGroup987E976C8000947E9AB3:
287-
Type: AWS::EC2::SecurityGroupEgress
286+
? ApplicationLoadBalancerALBSecurityGrouptodevmysitecomstackBackendBackendSecurityGroup987E976C8000947E9AB3
287+
: Type: AWS::EC2::SecurityGroupEgress
288288
Properties:
289289
GroupId:
290290
Fn::GetAtt:
@@ -373,7 +373,7 @@ Resources:
373373
Ref: VpcC3027511
374374
Metadata:
375375
aws:cdk:path: dev-mysite-com-stack/ApplicationLoadBalancer/DefaultTargetGroup/Resource
376-
StaticSiteStaticSiteBucket442CE34F:
376+
StaticSiteBucket6BF500B9:
377377
Type: AWS::S3::Bucket
378378
Properties:
379379
AccessControl: PublicRead
@@ -387,12 +387,12 @@ Resources:
387387
UpdateReplacePolicy: Delete
388388
DeletionPolicy: Delete
389389
Metadata:
390-
aws:cdk:path: dev-mysite-com-stack/StaticSite/StaticSiteBucket/Resource
391-
StaticSiteStaticSiteBucketPolicyC8E62485:
390+
aws:cdk:path: dev-mysite-com-stack/StaticSiteBucket/StaticSiteBucket/Resource
391+
StaticSiteBucketPolicy543699F0:
392392
Type: AWS::S3::BucketPolicy
393393
Properties:
394394
Bucket:
395-
Ref: StaticSiteStaticSiteBucket442CE34F
395+
Ref: StaticSiteBucket6BF500B9
396396
PolicyDocument:
397397
Statement:
398398
- Action: s3:GetObject
@@ -402,12 +402,12 @@ Resources:
402402
Fn::Join:
403403
- ""
404404
- - Fn::GetAtt:
405-
- StaticSiteStaticSiteBucket442CE34F
405+
- StaticSiteBucket6BF500B9
406406
- Arn
407407
- /*
408408
Version: "2012-10-17"
409409
Metadata:
410-
aws:cdk:path: dev-mysite-com-stack/StaticSite/StaticSiteBucket/Policy/Resource
410+
aws:cdk:path: dev-mysite-com-stack/StaticSiteBucket/StaticSiteBucket/Policy/Resource
411411
StaticSiteCloudFrontDistributionCFDistributionA70E78CD:
412412
Type: AWS::CloudFront::Distribution
413413
Properties:
@@ -521,7 +521,7 @@ Resources:
521521
DomainName:
522522
Fn::Join:
523523
- ""
524-
- - Ref: StaticSiteStaticSiteBucket442CE34F
524+
- - Ref: StaticSiteBucket6BF500B9
525525
- .s3-website-us-east-1.amazonaws.com
526526
Id: origin2
527527
PriceClass: PriceClass_100
@@ -820,7 +820,7 @@ Resources:
820820
- - Ref: AWS::AccountId
821821
- .dkr.ecr.us-east-1.
822822
- Ref: AWS::URLSuffix
823-
- /aws-cdk/assets:47065bc78cdd042647d95665e4f6fc1c352f98e0748ad1947d0b1d788cc1ec49
823+
- /aws-cdk/assets:41bdd10a3c4f6c26292af664680559ccbaecfcd26073ddb0df264187ffa4fdfb
824824
LogConfiguration:
825825
LogDriver: awslogs
826826
Options:
@@ -915,8 +915,8 @@ Resources:
915915
- Ref: BackendBackendTaskExecutionRole3B22D4E5
916916
Metadata:
917917
aws:cdk:path: dev-mysite-com-stack/Backend/BackendTask/ExecutionRole/DefaultPolicy/Resource
918-
BackendBackendSecurityGroupfromdevmysitecomstackApplicationLoadBalancerALBSecurityGroup41CD7D0380003CD57722:
919-
Type: AWS::EC2::SecurityGroupIngress
918+
? BackendBackendSecurityGroupfromdevmysitecomstackApplicationLoadBalancerALBSecurityGroup41CD7D0380003CD57722
919+
: Type: AWS::EC2::SecurityGroupIngress
920920
Properties:
921921
IpProtocol: tcp
922922
Description: Load balancer to target
@@ -1026,7 +1026,7 @@ Resources:
10261026
- - Ref: AWS::AccountId
10271027
- .dkr.ecr.us-east-1.
10281028
- Ref: AWS::URLSuffix
1029-
- /aws-cdk/assets:47065bc78cdd042647d95665e4f6fc1c352f98e0748ad1947d0b1d788cc1ec49
1029+
- /aws-cdk/assets:41bdd10a3c4f6c26292af664680559ccbaecfcd26073ddb0df264187ffa4fdfb
10301030
LogConfiguration:
10311031
LogDriver: awslogs
10321032
Options:
@@ -1213,7 +1213,7 @@ Resources:
12131213
- - Ref: AWS::AccountId
12141214
- .dkr.ecr.us-east-1.
12151215
- Ref: AWS::URLSuffix
1216-
- /aws-cdk/assets:47065bc78cdd042647d95665e4f6fc1c352f98e0748ad1947d0b1d788cc1ec49
1216+
- /aws-cdk/assets:41bdd10a3c4f6c26292af664680559ccbaecfcd26073ddb0df264187ffa4fdfb
12171217
LogConfiguration:
12181218
LogDriver: awslogs
12191219
Options:
@@ -1399,7 +1399,7 @@ Resources:
13991399
- - Ref: AWS::AccountId
14001400
- .dkr.ecr.us-east-1.
14011401
- Ref: AWS::URLSuffix
1402-
- /aws-cdk/assets:47065bc78cdd042647d95665e4f6fc1c352f98e0748ad1947d0b1d788cc1ec49
1402+
- /aws-cdk/assets:41bdd10a3c4f6c26292af664680559ccbaecfcd26073ddb0df264187ffa4fdfb
14031403
LogConfiguration:
14041404
LogDriver: awslogs
14051405
Options:
@@ -1487,4 +1487,3 @@ Resources:
14871487
Type: AWS::CDK::Metadata
14881488
Properties:
14891489
Modules: aws-cdk=1.38.0,@aws-cdk/assets=1.38.0,@aws-cdk/aws-apigateway=1.38.0,@aws-cdk/aws-applicationautoscaling=1.38.0,@aws-cdk/aws-autoscaling=1.38.0,@aws-cdk/aws-autoscaling-common=1.38.0,@aws-cdk/aws-autoscaling-hooktargets=1.38.0,@aws-cdk/aws-batch=1.38.0,@aws-cdk/aws-certificatemanager=1.38.0,@aws-cdk/aws-cloudformation=1.38.0,@aws-cdk/aws-cloudfront=1.38.0,@aws-cdk/aws-cloudwatch=1.38.0,@aws-cdk/aws-codebuild=1.38.0,@aws-cdk/aws-codecommit=1.38.0,@aws-cdk/aws-codepipeline=1.38.0,@aws-cdk/aws-cognito=1.38.0,@aws-cdk/aws-ec2=1.38.0,@aws-cdk/aws-ecr=1.38.0,@aws-cdk/aws-ecr-assets=1.38.0,@aws-cdk/aws-ecs=1.38.0,@aws-cdk/aws-ecs-patterns=1.38.0,@aws-cdk/aws-elasticache=1.38.0,@aws-cdk/aws-elasticloadbalancing=1.38.0,@aws-cdk/aws-elasticloadbalancingv2=1.38.0,@aws-cdk/aws-events=1.38.0,@aws-cdk/aws-events-targets=1.38.0,@aws-cdk/aws-iam=1.38.0,@aws-cdk/aws-kms=1.38.0,@aws-cdk/aws-lambda=1.38.0,@aws-cdk/aws-logs=1.38.0,@aws-cdk/aws-rds=1.38.0,@aws-cdk/aws-route53=1.38.0,@aws-cdk/aws-route53-targets=1.38.0,@aws-cdk/aws-s3=1.38.0,@aws-cdk/aws-s3-assets=1.38.0,@aws-cdk/aws-sam=1.38.0,@aws-cdk/aws-secretsmanager=1.38.0,@aws-cdk/aws-servicediscovery=1.38.0,@aws-cdk/aws-sns=1.38.0,@aws-cdk/aws-sns-subscriptions=1.38.0,@aws-cdk/aws-sqs=1.38.0,@aws-cdk/aws-ssm=1.38.0,@aws-cdk/aws-stepfunctions=1.38.0,@aws-cdk/cloud-assembly-schema=1.38.0,@aws-cdk/core=1.38.0,@aws-cdk/custom-resources=1.38.0,@aws-cdk/cx-api=1.38.0,@aws-cdk/region-info=1.38.0,jsii-runtime=Python/3.6.8
1490-

gitlab-ci/aws/cdk.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ variables:
2525
after_script:
2626
- echo "Build Complete"
2727

28-
2928
.Sync Quasar PWA Assets:
3029
image: python:3.8
3130
stage: deploy

0 commit comments

Comments
 (0)