使用 AWS CDK 设置 CloudFrontWebDistribution 以从 S3 存储桶获取 /subdirectory server /subdirectory/index.html

Use AWS CDK to set up a CloudFrontWebDistribution to have GET /subdirectory server /subdirectory/index.html from an S3 bucket

我正在使用 https://github.com/aws-samples/aws-cdk-examples/tree/master/typescript/static-site AWS CDK 示例来配置 Cloudfront + S3 存储桶来为静态站点提供服务。

虽然对 GET /subdirectory 的请求似乎没有响应 /subdirectory/index.html。如何使用 CDK 配置 Cloudfront + S3 以服务 /subdirectory/index.html?

我最终找到了创建 Lambda@Edge 函数的解决方案,该函数执行 Url 重写。

https://briantakita.com/posts/static-https-websites-using-aws-cdk-cloudfront-and-s3

源代码包含在此gist

如果您不想使用 lambda,您可以将错误重定向到 index.html,这就是您应该使用

在 CloudFront 上托管 SPA 的方式
errorConfigurations: [
       {
          errorCode: 403,
          responseCode: 200,
          responsePagePath: '/index.html',
          errorCachingMinTtl: 10
       }
   ]

有关详细信息,请参阅 https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudfront.CfnDistribution.CustomErrorResponseProperty.html