Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:81
Props for an API Gateway–fronted CloudFront distribution.
Remarks
Wraps a cloudFront.Distribution that fronts an apigw.RestApi,
creates an alias for <apiSubDomain>.<hostedZone>
, optionally associates a
Lambda@Edge version, and (optionally) wires the distribution into a provided
monitoring facade.
Important constraints
- domainCertificate: When used with CloudFront, the ACM certificate
must be in
us-east-1
. - edgeFunction: Lambda@Edge versions must be in
us-east-1
. - If monitoringFacade is supplied, the construct calls
monitoringFacade.monitorCloudFrontDistribution({ distribution })
after creating the distribution.
Example
const zone = route53.HostedZone.fromHostedZoneAttributes(this, 'Zone', {
hostedZoneId: 'Z1234567890',
zoneName: 'mydomain.com',
});
const cert = acm.Certificate.fromCertificateArn(this, 'Cert',
'arn:aws:acm:us-east-1:123456789012:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
);
const api = new apigw.RestApi(this, 'Api', {
deployOptions: { stageName: 'dev' },
});
// (Optional) monitoring facade you manage elsewhere
const facade = new monitoring.MonitoringFacade(this, 'Monitoring', { /\* ... */ });
new ApiCloudFrontDistribution(this, 'Dist', {
stageName: 'dev',
domainHostedZone: zone,
apiSubDomain: 'api',
domainCertificate: cert,
api,
priceClass: cloudFront.PriceClass.PRICE_CLASS_100,
enabled: true,
comment: 'dev api distribution',
edgeFunction: lambda.Version.fromVersionArn(this, 'EdgeVer', 'arn:aws:lambda:us-east-1:acct:function:name:1'),
monitoringFacade: facade,
// Optional alarms — these examples use the official types from
// the cdklabs/cdk-monitoring-constructs package.
alarmConfiguration: {
// Map of disambiguator (e.g. 'Critical', 'Warning') to ErrorRateThreshold
// See constructs.dev docs for ErrorRateThreshold.
addError4xxRate: {
'4xxErrorRate': {
maxErrorRate: 1,
evaluationPeriods: 1,
datapointsToAlarm: 1,
},
},
},
});
See
cloudFront.DistributionProps
Extends
Pick
<cloudFront.DistributionProps
,"comment"
|"priceClass"
|"enabled"
>
Properties
alarmConfiguration?
optional
alarmConfiguration:CloudFrontDistributionMonitoringOptions
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:170
Optional configuration for alarms and thresholds to apply to the monitored CloudFront distribution.
Remarks
Only applicable if monitoringFacade is also provided.
Default Value
No alarms or thresholds are configured.
api
api:
RestApi
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:116
The API Gateway REST API that the distribution will front.
apiSubDomain
apiSubDomain:
string
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:105
The subdomain to use for the API.
The final DNS name will typically be <apiSubDomain>.<domainHostedZone.zoneName>
.
Example
'api'
comment
comment:
string
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:137
A human-readable comment for the distribution.
Example
'dev api distribution'
Overrides
Pick.comment
domainCertificate
domainCertificate:
ICertificate
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:111
The ACM certificate for the CloudFront alias. Must be in us-east-1
.
(CloudFront requires certificates in the N. Virginia region.)
domainHostedZone
domainHostedZone:
IHostedZone
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:97
The public Route 53 hosted zone that owns the apex domain (e.g., mydomain.com
).
Used to create the DNS record for the API subdomain.
edgeFunction?
optional
edgeFunction:IVersion
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:146
Optional Lambda@Edge function version to associate with the distribution
(e.g., at VIEWER_REQUEST
). The version must be in us-east-1
.
If omitted, no edge function is attached.
See
lambda.Version
enabled
enabled:
boolean
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:130
Whether the distribution is enabled.
Default Value
true
Overrides
Pick.enabled
monitoringFacade?
optional
monitoringFacade:MonitoringFacade
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:159
Optional monitoring facade used to register metrics/alarms/dashboards for the created CloudFront distribution.
Remarks
When provided, the construct calls
monitoringFacade.monitorCloudFrontDistribution({ distribution })
after creating the distribution.
Default Value
undefined
priceClass
priceClass:
PriceClass
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:123
The CloudFront price class.
Default Value
cloudFront.PriceClass.PRICE_CLASS_100
(recommended)
Overrides
Pick.priceClass
stageName
stageName:
string
Defined in: src/api-gateway-cloudfront-distribution/api-cloudfront-distribution.ts:91
The API Gateway stage name that this distribution targets (e.g., dev
, prod
).
Example
'dev'