locals { project = "seahaven-ap" account_id = "710827005802" hcp_project = "seahaven-dev" hcp_workspace = "seahaven-ap-dev" apply_role = "hcptf-seahaven-ap" plan_role = "hcptf-seahaven-ap-plan" deploy_role = "githubdeploy-seahaven-ap" web_bucket_name = "seahaven-ap-web-${local.account_id}" artifacts_bucket_name = "seahaven-ap-artifacts-${local.account_id}" documents_bucket_name = "seahaven-ap-documents-${local.account_id}" ssm_prefix = "/seahaven-ap" manage_vpc = var.existing_vpc_id == "" vpc_cidr = "10.63.0.0/16" public_subnet_cidrs = ["10.63.0.0/24", "10.63.1.0/24"] private_subnet_cidrs = ["10.63.10.0/24", "10.63.11.0/24"] github_oidc_provider_arn = "arn:aws:iam::${local.account_id}:oidc-provider/token.actions.githubusercontent.com" cache_policy_caching_optimized = "658327ea-f89d-4fab-a63d-7e88639e58f6" cache_policy_caching_disabled = "4135ea2d-6df8-44a3-9df3-4b5a84be39ad" origin_request_all_viewer_except_host = "b689b0a8-53d0-40ab-baf2-68738e2966ac" response_headers_security_headers = "67f7725c-6f97-4210-82d7-5512b31e9d03" s3_origin_id = "S3WebOrigin" api_origin_id = "ApiOrigin" spa_csp = join(" ", [ "default-src 'self';", "script-src 'self';", "style-src 'self' 'unsafe-inline';", "img-src 'self' data:;", "font-src 'self';", "connect-src 'self';", "object-src 'none';", "base-uri 'self';", "form-action 'self';", "frame-ancestors 'none';", "upgrade-insecure-requests;", ]) spa_permissions_policy = join(", ", [ "accelerometer=()", "camera=()", "geolocation=()", "gyroscope=()", "magnetometer=()", "microphone=()", "payment=()", "usb=()", ]) spa_rewrite_code = join("\n", [ "function handler(event) {", " var request = event.request;", " var uri = request.uri;", " if (uri.lastIndexOf('.') <= uri.lastIndexOf('/')) {", " request.uri = '/index.html';", " }", " return request;", "}", ]) spa_security_headers_code = join("\n", [ "function handler(event) {", " var headers = event.response.headers;", " headers['content-security-policy'] = { value: ${jsonencode(local.spa_csp)} };", " headers['permissions-policy'] = { value: ${jsonencode(local.spa_permissions_policy)} };", " return event.response;", "}", ]) }