Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
223 changes: 144 additions & 79 deletions iac/iac/bucket_stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@
class BucketStack(Construct):
s3_bucket_member: aws_s3.Bucket
s3_bucket_project: aws_s3.Bucket
s3_bucket_dev_policy_documents: aws_s3.Bucket
selfie_validation_step_function: aws_stepfunctions.StateMachine
cloudfront_distribution_member: aws_cloudfront.Distribution
cloudfront_distribution_project: aws_cloudfront.Distribution
cloudfront_distribution_dev_policy_documents: aws_cloudfront.Distribution

def __init__(self, scope: Construct) -> None:
super().__init__(scope, "PortalInterno_Bucket")
Expand All @@ -25,93 +27,156 @@ def __init__(self, scope: Construct) -> None:

REMOVAL_POLICY = RemovalPolicy.RETAIN if 'prod' in self.github_ref_name else RemovalPolicy.DESTROY

self.s3_bucket_member = aws_s3.Bucket(self, "PortalInterno_Member_Photo_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)
self.s3_bucket_member = aws_s3.Bucket(
self,
"PortalInterno_Member_Photo_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST
],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)

oai = aws_cloudfront.OriginAccessIdentity(self, "PortalInterno_Member_Photo_OAI",
comment="This is PortalInterno member photo OAI")
oai = aws_cloudfront.OriginAccessIdentity(
self,
"PortalInterno_Member_Photo_OAI",
comment="This is PortalInterno member photo OAI"
)

self.s3_bucket_member.grant_read_write(oai)

self.cloudfront_distribution_member = aws_cloudfront.Distribution(self, "PortalInterno_Member_Photo_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_member,
origin_access_identity=oai),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)
self.cloudfront_distribution_member = aws_cloudfront.Distribution(
self,
"PortalInterno_Member_Photo_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_member,
origin_access_identity=oai
),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)

self.s3_bucket_project = aws_s3.Bucket(self, "PortalInterno_Project_Photo_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)
self.s3_bucket_project = aws_s3.Bucket(
self,
"PortalInterno_Project_Photo_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST
],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)

oai = aws_cloudfront.OriginAccessIdentity(self, "PortalInterno_Project_Photo_OAI",
comment="This is PortalInterno project photo OAI")
oai = aws_cloudfront.OriginAccessIdentity(
self,
"PortalInterno_Project_Photo_OAI",
comment="This is PortalInterno project photo OAI"
)

self.s3_bucket_project.grant_read_write(oai)

self.cloudfront_distribution_project = aws_cloudfront.Distribution(self, "PortalInterno_Project_Photo_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_project,
origin_access_identity=oai),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)
self.cloudfront_distribution_project = aws_cloudfront.Distribution(
self,
"PortalInterno_Project_Photo_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_project,
origin_access_identity=oai
),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)

self.s3_bucket_member_report = aws_s3.Bucket(self, "PortalInterno_Member_Report_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)
self.s3_bucket_member_report = aws_s3.Bucket(
self,
"PortalInterno_Member_Report_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST
],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)

self.cloudfront_distribution_member_report = aws_cloudfront.Distribution(self, "PortalInterno_Member_Report_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_member_report,
origin_access_identity=oai),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)
self.cloudfront_distribution_member_report = aws_cloudfront.Distribution(
self,
"PortalInterno_Member_Report_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_member_report,
origin_access_identity=oai
),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)

self.s3_bucket_dev_policy_documents= aws_s3.Bucket(
self,
"PortalInterno_Dev_Policy_Documents_S3_Bucket",
versioned= True,
block_public_access= aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy= REMOVAL_POLICY
)

oai=aws_cloudfront.OriginAccessIdentity(
self,
"PortalInterno_Dev_Policy_Documents_OAI",
comment= "This is Portal interno dev policy documents OAI"
)

self.s3_bucket_dev_policy_documents.grant_read_write(oai)

self.cloudfront_distribution_dev_policy_documents= aws_cloudfront.Distribution(
self,
"PortalInterno_Dev_Policy_Documents_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_dev_policy_documents,
origin_access_identity=oai
),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)
2 changes: 2 additions & 0 deletions iac/iac/iac_stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
"CLOUD_FRONT_DISTRIBUTION_DOMAIN_ASSETS_PROJECT": self.bucket_stack.cloudfront_distribution_project.domain_name,
"S3_BUCKET_NAME_MEMBER_REPORT": self.bucket_stack.s3_bucket_member_report.bucket_name,
"CLOUD_FRONT_DISTRIBUTION_DOMAIN_ASSETS_MEMBER_REPORT": self.bucket_stack.cloudfront_distribution_member_report.domain_name,
"S3_BUCKET_NAME_DEV_POLICY_DOCUMENTS": self.bucket_stack.s3_bucket_dev_policy_documents.bucket_name,
"CLOUD_FRONT_DISTRIBUTION_DOMAIN_ASSETS_DEV_POLICY_DOCUMENTS": self.bucket_stack.cloudfront_distribution_dev_policy_documents.domain_name,
"COGNITO_USER_POOL_ID": self.cognito_stack.user_pool.user_pool_id,
"COGNITO_CLIENT_ID": self.cognito_stack.client.user_pool_client_id,
"MSS_NAME": os.environ.get("MSS_NAME", "port_mss_action"),
Expand Down
4 changes: 4 additions & 0 deletions src/shared/environments.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ def load_envs(self):
self.s3_bucket_name_member = "portalinternostackbackd-portalinternobackbucket-project"
self.s3_bucket_name_project = "portalinternostackbackd-portalinternobackbucket-member"
self.s3_bucket_name_member_report = "portalinternostackbackd-portalinternobackbucket-member-report"
self.s3_bucket_name_dev_policy_documents= "portalinternosbackd-portalinternobackbucket-dev-policy-report"
self.region = "sa-east-1"
self.endpoint_url = "http://localhost:8000"
self.dynamo_table_name = "port_mss_action-table"
Expand All @@ -60,6 +61,7 @@ def load_envs(self):
self.cloud_front_distribution_domain_assets_member = "https://d3q9q9q9q9q9q9.cloudfront.net"
self.cloud_front_distribution_domain_assets_project = "https://d3q9q9q9q9q9q9.cloudfront.net"
self.cloud_front_distribution_domain_assets_member_report = "https://d3q9q9q9q9q9q9.cloudfront.net"
self.cloud_front_distribution_domain_assets_dev_policy_documents= "https://d3q9q9q9q9q9q9.cloudfront.net"
self.bucket_endpoint_url = "http://localhost:9000"
self.reply_to_email = "dev@maua.br"
self.from_email = "contato@devmaua.com"
Expand All @@ -71,6 +73,7 @@ def load_envs(self):
self.s3_bucket_name_member = os.environ.get("S3_BUCKET_NAME_MEMBER")
self.s3_bucket_name_project = os.environ.get("S3_BUCKET_NAME_PROJECT")
self.s3_bucket_name_member_report = os.environ.get("S3_BUCKET_NAME_MEMBER_REPORT")
self.s3_bucket_name_dev_policy_documents= os.environ.get("S3_BUCKET_NAME_DEV_POLICY_DOCUMENTS")
self.region = os.environ.get("REGION")
self.endpoint_url = os.environ.get("ENDPOINT_URL")
self.dynamo_table_name = os.environ.get("DYNAMO_TABLE_NAME")
Expand All @@ -85,6 +88,7 @@ def load_envs(self):
self.cloud_front_distribution_domain_assets_member = os.environ.get("CLOUD_FRONT_DISTRIBUTION_DOMAIN_ASSETS_MEMBER")
self.cloud_front_distribution_domain_assets_project = os.environ.get("CLOUD_FRONT_DISTRIBUTION_DOMAIN_ASSETS_PROJECT")
self.cloud_front_distribution_domain_assets_member_report = os.environ.get("CLOUD_FRONT_DISTRIBUTION_DOMAIN_ASSETS_MEMBER_REPORT")
self.cloud_front_distribution_domain_assets_dev_policy_documents= os.environ.get("CLOUD_FRONT_DISTRIBUTION_DOMAIN_ASSETS_DEV_POLICY_DOCUMENTS")
self.bucket_endpoint_url = os.environ.get("BUCKET_ENDPOINT_URL")
self.reply_to_email = os.environ.get("REPLY_TO_EMAIL")
self.from_email = os.environ.get("FROM_EMAIL")
Expand Down
Loading