如何使用 cloudfront 托管静态 s3 网站,该网站使用内置登录页面的 cognito

How to host a static s3 website with cloudfront that uses cognito built in login pages

我是aws的初学者。我想托管一个带有云端分发的静态 S3 网站,但我想在用户访问该网站时首先添加内置登录页面的 Cognito url.I 我不确定该怎么做。我看到 S3 + cloudfront 或 cognito 的多种解决方案,但我没有得到关于如何在页面中集成 S3 网站 + cloudfront + cognito bult 的任何解决方案。 有人可以建议怎么做吗? 提前致谢!

CloudFront 没有原生的 Cognito 集成,至少在撰写本文时是这样。

但是,CloudFront 确实有一个名为 Lambda@Edge 的功能,允许您提供 server-side JavaScript CloudFront 可以在 HTTP 请求(和响应)处理期间的特定触发点执行,允许代码检查请求(和响应)的各个方面,然后告诉 CloudFront 修改处理方式,例如根据特定条件(例如出于身份验证目的)允许或拒绝请求。

AWS 博客 post How to Use Lambda@Edge and JSON Web Tokens to Enhance Web Application Security 似乎详细描述了如何使用 Lambda@Edge 推出您自己的 Cognito-based 解决方案,并包含一个 CloudFormation 堆栈模板,该模板实际上将在您自己的 AWS 账户中启动此解决方案,然后您可以在其中检查代码和配置,以了解其工作原理。

通过此设置,CloudFront 可以在向 S3 存储桶发出请求时使用标准 Origin Access Identity 对自身进行身份验证,因此 S3 不需要任何特殊配置——S3 不会意识到 Cognito 身份验证的发生在 front-end.

我建议研究 AWS Amplify (https://aws-amplify.github.io/),它非常类似于 AWS 对 Firebase 的回答。它允许您非常快速地启动 AWS 资源,例如 Cognito、存储(包括用于网站)与 S3、api、数据库等等。

A​​WS Amplify 有一个 ready-made 和可配置的 Authenticator 组件,用于 React 和 Angular 项目,它与 Cognito 集成并将立即处理注册、登录、密码重置等。

希望对您有所帮助。