seanpedrickcase's picture
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)