Added folder with CDK code and app. Updated config py file to be compatible with all temp folders needed for read only file systems
36574ae
import os | |
from aws_cdk import (App, Environment) | |
# Assuming these are still relevant for you | |
from check_resources import check_and_set_context, CONTEXT_FILE | |
from cdk_config import AWS_ACCOUNT_ID, AWS_REGION, RUN_USEAST_STACK, USE_CLOUDFRONT | |
from cdk_stack import CdkStack, CdkStackCloudfront#, CdkStackMain | |
from cdk_functions import load_context_from_file, create_basic_config_env | |
# Initialize the CDK app | |
app = App() | |
# --- ENHANCED CONTEXT GENERATION AND LOADING --- | |
# 1. Always ensure the old context file is removed before generation | |
if os.path.exists(CONTEXT_FILE): | |
try: | |
os.remove(CONTEXT_FILE) | |
print(f"Removed stale context file: {CONTEXT_FILE}") | |
except OSError as e: | |
print(f"Warning: Could not remove old context file {CONTEXT_FILE}: {e}") | |
# Proceed anyway, check_and_set_context might handle overwriting | |
# 2. Always run the pre-check script to generate fresh context | |
print("Running pre-check script to generate application context...") | |
try: | |
check_and_set_context() | |
if not os.path.exists(CONTEXT_FILE): | |
raise RuntimeError(f"check_and_set_context() finished, but {CONTEXT_FILE} was not created.") | |
print(f"Context generated successfully at {CONTEXT_FILE}.") | |
except Exception as e: | |
raise RuntimeError(f"Failed to generate context via check_and_set_context(): {e}") | |
if os.path.exists(CONTEXT_FILE): | |
load_context_from_file(app, CONTEXT_FILE) | |
else: | |
raise RuntimeError(f"Could not find {CONTEXT_FILE}.") | |
# Create basic config.env file that user can use to run the app later. Input is the folder it is saved into. | |
create_basic_config_env("config") | |
# Define the environment for the regional stack (where ALB resides) | |
aws_env_regional = Environment(account=AWS_ACCOUNT_ID, region=AWS_REGION) | |
# Create the regional stack (ALB, SGs, etc.) | |
# regional_stack = CdkStack(app, | |
# "RedactionStackSubnets", | |
# env=aws_env_regional, | |
# cross_region_references=True) | |
# regional_stack_main = CdkStackMain(app, | |
# "RedactionStackMain", | |
# env=aws_env_regional, | |
# private_subnets=regional_stack.params["private_subnets"], | |
# private_route_tables=regional_stack.params["private_route_tables"], | |
# public_subnets=regional_stack.params["public_subnets"], | |
# public_route_tables=regional_stack.params["public_route_tables"], | |
# cross_region_references=True) | |
regional_stack = CdkStack(app, | |
"RedactionStack", | |
env=aws_env_regional, | |
cross_region_references=True) | |
if USE_CLOUDFRONT == 'True' and RUN_USEAST_STACK == 'True': | |
# Define the environment for the CloudFront stack (always us-east-1 for CF-level resources like WAFv2 WebACLs for CF) | |
aws_env_us_east_1 = Environment(account=AWS_ACCOUNT_ID, region="us-east-1") | |
# Create the CloudFront stack, passing the outputs from the regional stack | |
cloudfront_stack = CdkStackCloudfront( | |
app, | |
"RedactionStackCloudfront", | |
env=aws_env_us_east_1, | |
alb_arn=regional_stack.params["alb_arn_output"], | |
alb_sec_group_id=regional_stack.params["alb_security_group_id"], | |
alb_dns_name=regional_stack.params["alb_dns_name"], | |
cross_region_references=True | |
) | |
# Synthesize the CloudFormation template | |
app.synth(validate_on_synthesis=True) |