in frontend-infrastructure/src/main/java/com/recognise/FrontendInfrastructureStack.java [87:119]
private CloudFrontWebDistribution distribution(Bucket frontendBucket, OriginAccessIdentity accessIdentity, DnsValidatedCertificate certificate) {
CloudFrontWebDistribution.Builder builder = CloudFrontWebDistribution.Builder.create(this, "WebApplicationFrontendDistribution")
.originConfigs(singletonList(
SourceConfiguration.builder()
.s3OriginSource(S3OriginConfig.builder()
.s3BucketSource(frontendBucket)
.originAccessIdentity(accessIdentity)
.build())
.behaviors(singletonList(Behavior.builder()
.isDefaultBehavior(true)
.build()))
.build()
))
.viewerProtocolPolicy(ViewerProtocolPolicy.REDIRECT_TO_HTTPS)
.errorConfigurations(singletonList(CfnDistribution.CustomErrorResponseProperty.builder()
.errorCode(404)
.responseCode(200)
.responsePagePath("/index.html")
.build()))
.comment("Serve frontend for recognition")
.defaultRootObject("/index.html");
if (certificate != null) {
ViewerCertificate cert_domain = ViewerCertificate.fromAcmCertificate(certificate, ViewerCertificateOptions.builder()
.aliases(singletonList("face-recog." + contextValue("cert_domain")))
.build());
builder.viewerCertificate(cert_domain);
}
return builder
.build();
}