@@ -14,7 +14,7 @@ import { hasFiles } from '@stacksjs/storage'
14
14
import { path as p } from '@stacksjs/path'
15
15
import { env } from '@stacksjs/env'
16
16
import type { NestedCloudProps } from '../types'
17
- import type { EnvKey } from '../../../../../stack /env'
17
+ import type { EnvKey } from '../../../../../stacks /env'
18
18
19
19
export interface CdnStackProps extends NestedCloudProps {
20
20
certificate : acm . Certificate
@@ -23,6 +23,8 @@ export interface CdnStackProps extends NestedCloudProps {
23
23
firewall : wafv2 . CfnWebACL
24
24
originRequestFunction : lambda . Function
25
25
zone : route53 . IHostedZone
26
+ webServer : lambda . Function
27
+ webServerUrl : lambda . FunctionUrl
26
28
}
27
29
28
30
export class CdnStack {
@@ -190,29 +192,25 @@ export class CdnStack {
190
192
}
191
193
192
194
apiBehaviorOptions ( scope : Construct , props : CdnStackProps ) : Record < string , cloudfront . BehaviorOptions > {
193
- const origin = new origins . HttpOrigin ( props . lb . loadBalancerDnsName , {
195
+ const origin = ( path : '/api' | '/api/*' = '/api' ) => new origins . HttpOrigin ( props . webServerUrl . url , {
194
196
originPath : path ,
195
- protocolPolicy : cloudfront . OriginProtocolPolicy . HTTP_ONLY ,
197
+ protocolPolicy : cloudfront . OriginProtocolPolicy . HTTPS_ONLY ,
196
198
} )
197
- // const origin = (path: '/api' | '/api/*' = '/api') => new origins.LoadBalancerV2Origin(props.lb, {
198
- // originPath: path,
199
- // protocolPolicy: cloudfront.OriginProtocolPolicy.HTTPS_ONLY,
200
- // })
201
199
202
200
return {
203
201
'/api' : {
204
- origin,
202
+ origin : origin ( ) ,
205
203
compress : true ,
206
204
allowedMethods : cloudfront . AllowedMethods . ALLOW_ALL ,
207
- // cachedMethods: cloudfront.CachedMethods.CACHE_GET_HEAD_OPTIONS,
205
+ cachedMethods : cloudfront . CachedMethods . CACHE_GET_HEAD_OPTIONS ,
208
206
cachePolicy : this . setApiCachePolicy ( scope ) ,
209
207
viewerProtocolPolicy : cloudfront . ViewerProtocolPolicy . REDIRECT_TO_HTTPS ,
210
208
} ,
211
209
'/api/*' : {
212
- origin,
210
+ origin : origin ( '/api/*' ) ,
213
211
compress : true ,
214
212
allowedMethods : cloudfront . AllowedMethods . ALLOW_ALL ,
215
- // cachedMethods: cloudfront.CachedMethods.CACHE_GET_HEAD_OPTIONS,
213
+ cachedMethods : cloudfront . CachedMethods . CACHE_GET_HEAD_OPTIONS ,
216
214
cachePolicy : this . apiCachePolicy ,
217
215
viewerProtocolPolicy : cloudfront . ViewerProtocolPolicy . REDIRECT_TO_HTTPS ,
218
216
} ,
@@ -252,13 +250,13 @@ export class CdnStack {
252
250
return {
253
251
'/ai/ask' : {
254
252
origin : new origins . HttpOrigin ( '9qp44a2b7e.execute-api.us-east-1.amazonaws.com' , {
255
- originPath : '/prod ' ,
253
+ originPath : '/ai ' ,
256
254
protocolPolicy : cloudfront . OriginProtocolPolicy . HTTPS_ONLY ,
257
255
} ) ,
258
256
compress : false ,
259
257
allowedMethods : cloudfront . AllowedMethods . ALLOW_ALL ,
260
258
viewerProtocolPolicy : cloudfront . ViewerProtocolPolicy . REDIRECT_TO_HTTPS ,
261
- cachePolicy : new cloudfront . CachePolicy ( scope , 'ApiCachePolicy ' , {
259
+ cachePolicy : new cloudfront . CachePolicy ( scope , 'AiCachePolicy ' , {
262
260
comment : 'Stacks AI Cache Policy' ,
263
261
cachePolicyName : `${ this . props . slug } -${ this . props . appEnv } -ai-cache-policy` ,
264
262
defaultTtl : Duration . seconds ( 0 ) ,
@@ -300,7 +298,7 @@ export class CdnStack {
300
298
const keysToRemove = [ '_HANDLER' , '_X_AMZN_TRACE_ID' , 'AWS_REGION' , 'AWS_EXECUTION_ENV' , 'AWS_LAMBDA_FUNCTION_NAME' , 'AWS_LAMBDA_FUNCTION_MEMORY_SIZE' , 'AWS_LAMBDA_FUNCTION_VERSION' , 'AWS_LAMBDA_INITIALIZATION_TYPE' , 'AWS_LAMBDA_LOG_GROUP_NAME' , 'AWS_LAMBDA_LOG_STREAM_NAME' , 'AWS_ACCESS_KEY' , 'AWS_ACCESS_KEY_ID' , 'AWS_SECRET_ACCESS_KEY' , 'AWS_SESSION_TOKEN' , 'AWS_LAMBDA_RUNTIME_API' , 'LAMBDA_TASK_ROOT' , 'LAMBDA_RUNTIME_DIR' , '_' ]
301
299
keysToRemove . forEach ( key => delete env [ key as EnvKey ] )
302
300
303
- // behaviorOptions = this.apiBehaviorOptions(scope, props)
301
+ behaviorOptions = this . apiBehaviorOptions ( scope , props )
304
302
}
305
303
306
304
// if docMode is used, we don't need to add a behavior for the docs
0 commit comments