private CloudFrontWebDistribution distribution()

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();
    }